Android Navigation让页面跳转无比简单

 1.build.gradle添加依赖,对应下面的两个位置《位置千万不能错了》

 

  buildFeatures{
        dataBinding = true
    }

 implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03'

2.创建fragment(需要几个就创建几个,配置都是一样的),我这里就创建7个搞复杂一点:

 3.重点来了:在res目录下创建一个navigation目录

 4.点击生成的文件,打开就会出现一个页面,按照箭头点击添加

 

 页面布局的效果

5. 现在页面的跳转路径实现了,在MainActity页面显示Fragment《Fragemnt必须依托在Activity才能实现跳转》

 拖到下面的时候会弹出一个对话框,如下操作

 到navigation查看一下是否添加成功

 7.开始监听点击按钮跳转是实现 每一个Fragment都是一样的操作,我就写一个简单实现就可以了

public class HomFragment extends Fragment {
    public HomFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_hom, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        /**
         * 1.获取页面里面的Button
         * 2.实现跳转
         */
        Button butOne =  view.findViewById(R.id.but_hom_1); //获取的第一个按钮
        Button butTwo =  view.findViewById(R.id.but_hom_2);//获取的第二个按钮
        Button butThere= view.findViewById(R.id.but_hom_3);//获取的第三按钮
        //实现跳转
        butOne.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homFragment_to_oneFragment));
        butTwo.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homFragment_to_twoFragment));
        butThere.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homFragment_to_thereFragment));
    }
}

其他页面同理,简单实现 1.获取Buttor 2.触发监听3.Navigation.createNavigateOnClickListener获取跳转页页面id

8.MainActivity.java里面实现页面左上角的点击返回

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实现的点击按钮返回上一层页面
        NavHostFragment fragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
        NavController controller =fragment.getNavController();
        NavigationUI.setupActionBarWithNavController(this,controller);
    }
    //重写上面的方法来实现点击返回的事件
    @Override
    public boolean onSupportNavigateUp() {
        NavController controller = Navigation.findNavController(this,R.id.fragmentContainerView);
        return controller.navigateUp();
    }
}

到此就结束啦 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值