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【页面之间的切换】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)