Android Studio 之 Navigation【页面之间的切换】

Android Studio 之 Navigation【页面之间的切换】,第1张

概述 1.创建2个Fragment,下面两个include 不要勾  2.创建好Fragment 后,打开layout中的fragment.xml 文件,将里面默认的textView 控件删除掉 把ConstraintLayout 拖进来,用它来布局,比较方便  3.在res上右击,创建一个Navigation资源   第4步,在navigati

 

1.创建 2个 Fragment ,下面两个include 不要勾

 

 

2.创建好 Fragment 后,打开layout中的 fragment.xml 文件,将里面默认的 textVIEw 控件删除掉

  把 ConstraintLayout 拖进来,用它来布局,比较方便

 

 

3.在res上右击,创建一个Navigation资源

 

 

 

第4步,在navigation新建的文件中,把刚才创建的2个 fragment 添加进来

 

 

第5步,设置导航连接, 右边的Label是显示在最顶部的Title内容

 

 

 

 第六步:activity_main.xml文件中,把里面默认的控件删除掉,并把NavHostFragment控件拖进来

 

 

添加后4个边界连接上

 

第7步,fragment 页面添加按钮的事件

           按钮的点击事件放在这个事件中:onActivityCreated

package com.example.nativigationdemo1;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androIDx.annotation.Nullable;import androIDx.fragment.app.Fragment;import androIDx.navigation.NavController;import androIDx.navigation.Navigation;import static androID.vIEw.VIEw.OnClickListener;/** * A simple {@link Fragment} subclass. */public class HomeFragment extends Fragment {    public HomeFragment() {        // required empty public constructor    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // Inflate the layout for this fragment        return inflater.inflate(R.layout.fragment_home, container, false);    }    @OverrIDe    public voID onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        button button;        //通过 getVIEw() 就能访问到 HomeFragment与DetialFrament中的按钮        //注意下面这里的ID不能写错了,如果写错了会导致app启动就出错        button  = getVIEw().findVIEwByID(R.ID.button2);        button.setonClickListener(new OnClickListener(){            @OverrIDe            public voID onClick(VIEw v) {                NavController controller = Navigation.findNavController(v);                controller.navigate(R.ID.action_homeFragment_to_detialFragment);            }        });    }}

  

 另一个fragment 界面的事件方法

package com.example.nativigationdemo1;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androIDx.annotation.Nullable;import androIDx.fragment.app.Fragment;import androIDx.navigation.Navigation;/** * A simple {@link Fragment} subclass. */public class DetialFragment extends Fragment {    public DetialFragment() {        // required empty public constructor    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // Inflate the layout for this fragment        return inflater.inflate(R.layout.fragment_detial, container, false);    }    @OverrIDe    public voID onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        getVIEw().findVIEwByID(R.ID.button).setonClickListener(Navigation.createNavigateOnClickListener(R.ID.action_detialFragment_to_homeFragment));    }}

  

 最后一步,在 MainActivity 的 java 文件中,设置头部导航的返回和头部内容的显示

protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        //页面头部标题        NavController controller = Navigation.findNavController(this,R.ID.fragment); //这里的 R.ID.fragment 是 activity界面拖进来的 fragment组件(NavHotFragment)        NavigationUI.setupActionbarWithNavController(this,controller);    }    //设置返回    @OverrIDe    public boolean onSupportNavigateUp() {        //return super.onSupportNavigateUp();        NavController controller = Navigation.findNavController(this,R.ID.fragment);        return controller.navigateUp();    }

  

注意,如果要设置动画效果,在navigation资源xml文件中,导航连接上点击,点右边可以设置

 

总结

以上是内存溢出为你收集整理的Android Studio 之 Navigation【页面之间切换】全部内容,希望文章能够帮你解决Android Studio 之 Navigation【页面之间的切换】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1210519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存