今天学习了简单的Navigation:页面导航。

页面导航的简单例子:

MainAcitivity:

  1. package com.example.navigation;
  2.  
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5.  
  6. import androidx.navigation.NavController;
  7. import androidx.navigation.Navigation;
  8. import androidx.navigation.ui.NavigationUI;
  9.  
  10. public class MainActivity extends AppCompatActivity {
  11.  
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. NavController navController = Navigation.findNavController(this,R.id.fragment);
  17. NavigationUI.setupActionBarWithNavController(this,navController);
  18. }
  19.  
  20. @Override
  21. public boolean onSupportNavigateUp() {
  22. NavController navController = Navigation.findNavController(this,R.id.fragment);
  23. return navController.navigateUp();
  24. }
  25. }

Home_Fragment:

  1. package com.example.navigation;
  2.  
  3. import android.os.Bundle;
  4. import android.support.annotation.Nullable;
  5. import android.support.v4.app.Fragment;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.Button;
  10.  
  11. import androidx.navigation.NavAction;
  12. import androidx.navigation.NavController;
  13. import androidx.navigation.Navigation;
  14.  
  15. /**
  16. * A simple {@link Fragment} subclass.
  17. */
  18. public class Home_Fragment extends Fragment {
  19.  
  20. public Home_Fragment() {
  21. // Required empty public constructor
  22. }
  23.  
  24. @Override
  25. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  26. Bundle savedInstanceState) {
  27. // Inflate the layout for this fragment
  28. return inflater.inflate(R.layout.fragment_home_, container, false);
  29. }
  30.  
  31. @Override
  32. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  33. super.onActivityCreated(savedInstanceState);
  34. Button button = getView().findViewById(R.id.button);
  35. button.setOnClickListener(new View.OnClickListener() {
  36. @Override
  37. public void onClick(View v) {
  38. NavController navController = Navigation.findNavController(v);
  39. navController.navigate(R.id.action_home_Fragment_to_detail_Fragment);
  40. }
  41. });
  42. }
  43. }

Detail_Fragment:

  1. package com.example.navigation;
  2.  
  3. import android.os.Bundle;
  4. import android.support.annotation.Nullable;
  5. import android.support.v4.app.Fragment;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.Button;
  10.  
  11. import androidx.navigation.NavController;
  12. import androidx.navigation.Navigation;
  13.  
  14. /**
  15. * A simple {@link Fragment} subclass.
  16. */
  17. public class Detail_Fragment extends Fragment {
  18.  
  19. public Detail_Fragment() {
  20. // Required empty public constructor
  21. }
  22.  
  23. @Override
  24. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  25. Bundle savedInstanceState) {
  26. // Inflate the layout for this fragment
  27. return inflater.inflate(R.layout.fragment_detail_, container, false);
  28. }
  29.  
  30. @Override
  31. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  32. super.onActivityCreated(savedInstanceState);
  33. // Button button = getView().findViewById(R.id.button2);
  34. // button.setOnClickListener(new View.OnClickListener() {
  35. // @Override
  36. // public void onClick(View v) {
  37. // NavController navController = Navigation.findNavController(v);
  38. // navController.navigate(R.id.action_detail_Fragment_to_home_Fragment);
  39. // }
  40. // });
  41. getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_detail_Fragment_to_home_Fragment));//上方注释的整体写法,功能一样
  42. }
  43. }

home_detail截图:

这个项目就是简单的跳转,

点击HOME按钮跳转到Detail

按DETAIL按钮或者左上方的返回箭头均可返回到HOME页面

安卓基础(Navigation)的更多相关文章

  1. [安卓基础] 004.运行app

    运行你的app 这篇课程会教你: 1.如何在设备上运行你的app. 2.如何在模拟器上运行你的app. 当然,在学习之前,你还需要知道: 1.如何使用设备. 2.如何使用模拟器. 3.管理你的项目. ...

  2. 安卓基础之Sqlite数据库最最基础操作

    Sqlite数据库基础操作 摘要:在应用中新建一个数据库,并创建一个数据表写入数据,然后读取表中数据并展示. 主要逻辑: 1.通过继承SQLiteOpenHelper自定义类,定制数据库的表结构,初始 ...

  3. 【安卓基础】WebView开发优化基础

    最近工作很忙,不仅要抽空进行管理,还有开发任务在身,幸好有一些规划进行指导,所以还能顺利解决问题.在管理和技术上面,我认为技术是硬实力,管理是软实力,自己需要多点时间花在技术上. 回归正题,在项目中的 ...

  4. [安卓基础] 006.打开另一个Activity

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. [安卓基础] 003.建立你的第一个App

    创建一个android工程项目 我们使用android提供的集成开发工具(Eclipse+ADT)来创建android工程项目.用这个集成开发工具创建项目,简单,方便,快捷,且自动帮助我们生成基础的文 ...

  6. [安卓基础] 001.学习Android开发的好教程

    如果想自学android,有许多不错的android网站.这里收集了一些,列举如下: 国内 极客学院,这里有非常丰富的视频教程. http://www.jikexueyuan.com/course/a ...

  7. [安卓基础]011存储数据(中)——sqlite语法介绍

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. [安卓基础] 007.管理Activity的生命周期

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. 安卓基础之通过Intent跳转Activity

    通过Intent跳转Activity   一.通过意图开启Activity的方式:   隐式意图:通过指定一组数据或者动作实现 Intent intent=new Intent(); intent.s ...

随机推荐

  1. 2020算法设计竞赛 H 坐火车

    链接:https://ac.nowcoder.com/acm/contest/3005/H来源:牛客网 大致题意:让我们针对每一个数,求这个数左区间和右区间颜色相同(也就是数字相同)得对数: 比如:左 ...

  2. Educational Codeforces Round 80 A-E简要题解

    contest链接:https://codeforces.com/contest/1288 A. Deadline 题意:略 思路:根据题意 x + [d/(x+1)] 需要找到一个x使得上式小于等于 ...

  3. scw——03错误,swagger开启错误

    错误: 代码: @Value("${swagger2.enable:false}") private boolean enable = false; 原因:没有开启swagger的 ...

  4. scw——01 java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMake

    错误: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.Mock ...

  5. TCP/IP详解,卷1:协议--IP:网际协议

    引言 I P 是 T C P / I P 协议族中最为核心的协议.所有的 T C P.U D P.I C M P 及 I G M P 数据都以 I P 数据 报格式传输(见图 1 - 4).许多刚开始 ...

  6. 手写基于Promise A+规范的Promise

    const PENDING = 'pending';//初始态const FULFILLED = 'fulfilled';//初始态const REJECTED = 'rejected';//初始态f ...

  7. 2019kali安装以及汉化

    Kali Linux2019.4版本包括了一些令人兴奋的新更新: 一个新的默认桌面环境,Xfce 新的GTK3主题(用于Gnome和Xfce) “Kali Undercover”模式介绍 Kali文档 ...

  8. python接口自动化之用HTMLTestRunner生成html测试报告

    [第一步]:引入HTMLTestRunner包 1.下载HTMLTestRunner,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html ...

  9. Codeforces补题2020.2.28(Round624 Div 3)

    A.Add Odd or Subtract Even 签到题~ #include<bits/stdc++.h> using namespace std; int T; int a,b; i ...

  10. wamp 安装

    下载地址:http://www.wampserver.com/ 安装 完成安装 安装目录下打开 安装成功