Navigation(1)页面导航及其实现

页面导航及其实现

基础讲解:

NavHost
用于存放页面的容器/控制器,这个页面可以进来也可以出去。

Fragment
使屏幕分功能显示不同的内容,本意来说就是碎片化,大屏幕分割成小的部分

NavController
用于控制导航的逻辑,例如按下哪一个按键切换为哪一个界面,切进去或切出来。

NavGraph
设置导航的路线,页面间的切换关系

1、创建Fragement
Navigation(1)页面导航及其实现_第1张图片
对于新创建的 fragement 进行简单的界面布局
Navigation(1)页面导航及其实现_第2张图片

2、创建NavGraph

Navigation(1)页面导航及其实现_第3张图片
对页面进行导航
Navigation(1)页面导航及其实现_第4张图片
右上角的 lable 用于修改页面的名称

3、对按键设定动作

分别在HomeFragment和DetailFragment进行操作

HomeFragment

Navigation(1)页面导航及其实现_第5张图片

//初始化
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
     
        super.onActivityCreated(savedInstanceState);
        Button button ;
        button = getView().findViewById(R.id.button); //先获取View,再加入Button的id
        button.setOnClickListener(new View.OnClickListener() {
     //设置监听
           @Override
           public void onClick(View view) {
     
               NavController controller = Navigation.findNavController(view);                      //设置导航的一个动作呼叫一个静态方法
               controller.navigate(R.id.action_homeFragment_to_detailFragment);
           }
       });
    }
}

DetailFragment

Navigation(1)页面导航及其实现_第6张图片

 @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
     
        super.onActivityCreated(savedInstanceState);
        getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_detailFragment_to_homeFragment2));//另一种方法
    }
}

两种方法均可以用来设置按键的导航动作

4、改变页面左上角名称,添加返回键
Navigation(1)页面导航及其实现_第7张图片
在 MainActivity 中进行操作

   @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NavController controller = Navigation.findNavController(this,R.id.fragment);
        NavigationUI.setupActionBarWithNavController(this,controller);//改变页面左上角名称
    }
//设置左上角返回键
    @Override
    public boolean onSupportNavigateUp() {
     
        NavController controller = Navigation.findNavController(this,R.id.fragment);
   	 	return controller.navigateUp();    
    //return super.onSupportNavigateUp();
    }
}

效果展示

Navigation(1)页面导航及其实现_第8张图片

你可能感兴趣的:(Android,java,android)