zoukankan      html  css  js  c++  java
  • JetPack(二)-Navigation

    利用Navigation Componets实现导航

    官方文档示例图:

    实现步骤

    1. 创建导航资源(在Res下新建导航资源文件)

    1. 添加导航容器

    在某Activity的xml中添加NavHostFragment选择创建的导航资源文件

    • 支持actionbar在代码中设置(可选)
            //设置actionbar
            NavController navController = Navigation.findNavController(this,R.id.fragment);
            NavigationUI.setupActionBarWithNavController(this,navController);
    

    点击返回按钮后的操作(弹出当前视图)

        @Override
        public boolean onSupportNavigateUp() {
            NavController navController = Navigation.findNavController(this,R.id.fragment);
            return navController.navigateUp();
        }
    

    视图跳转

    1. 通过任意fragment上的View获取NavController
    2. 根据action id进行导航(action id跳转的好处可以在xml文件中设置动画)
          
    NavController navController = Navigation.findNavController(v);
    navController.navigate(R.id.action_homeFragment_to_detailFragment);
    
    • 传递参数,只需添加bundle参数即可
    NavController navController = Navigation.findNavController(v);
    Bundle bundle = new Bundle();
    bundle.putString("name","jack");   navController.navigate(R.id.action_homeFragment_to_detailFragment,bundle);
    

    在另外一个fragment中获取参数

    String name = getArguments().getString("name","默认值");
    

    添加动画

    1. 创建动画xml文件

    2. 添加合适的动画

    其中 enter代表当前actions即将进入的fragment,exit代表当前fragment

    配合ViewModel

    和在Activity中使用几乎一致,只需要将绑定视图的操作修改为如下即可

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            MyViewModelWithLiveData  mMyViewModelWithLiveData = new ViewModelProvider(getActivity()).get(MyViewModelWithLiveData.class);
    
            FragmentDetailBinding detailBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_detail,container,false );
            detailBinding.setLifecycleOwner(getActivity());
            detailBinding.setData(mMyViewModelWithLiveData);
            return detailBinding.getRoot();
     
        }
    
  • 相关阅读:
    postman的使用方法详解!最全面的教程
    免费使用的加速器
    Windows添加启动项的两种方法
    Python版本微信跳一跳,软件配置
    Inno Setup教程
    Go开发环境安装配置
    Linux下安装Phantomjs
    Python的url解析库--urlparse
    Python处理HTML转义字符
    Python使用base64编码的问题
  • 原文地址:https://www.cnblogs.com/cnman/p/12960334.html
Copyright © 2011-2022 走看看