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();
}
}
到此就结束啦