专业的编程技术博客社区

网站首页 > 博客文章 正文

Android 的Bottom Navigation Activity框架踩坑

baijin 2024-08-15 00:16:12 博客文章 12 ℃ 0 评论

最近为了快速开发一个android App,安装了Android Studio Chipmunk | 2021.2.1 Patch 1,使用了Bottom Navigation Activity框架快速搭建了项目。

在使用的过程中还是踩坑不少,现在给大家总结一下避免踩坑。
一、关于ActivityMainBinding
一开始安装了Butter Knife,发现不太对头,面对android的快速发展,插件过期不更新也是很正常的。无意间发现
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
直接利用binding 能够快速的找到view。比如你的view的id为button_delete那么,binding.buttonDelete就可以直接获取。binding.getRoot()可以直接获取整个layout。
二、关于getSupportFragmentManager
在MainActivity中调用getSupportFragmentManager().getFragments().get(0)得到的是NavHostFragment,
继续通过NavHostFragment调用getChildFragmentManager才得到你真正需要的fragmentManager,也就是说他用NavHostFragment封装了一下。
NavHostFragment hostF = (NavHostFragment)getSupportFragmentManager().getFragments().get(0); hostFragmentManager = hostF.getChildFragmentManager(); List<Fragment> childfragments = hostFragmentManager.getFragments();
三、关于BottomNavigationView中3个导航按钮的点击监听
发现setOnNavigationItemSelectedListener已经弃用了,那么setOnItemSelectedListener行不行呢,简单测了一下还是不行。由于时间紧也没有仔细追究,继续使用
BottomNavigationItemView item = (BottomNavigationItemView)navView.findViewById(R.id.navigation_dashboard);
获取到菜单item的view,然后实现它的监听
item.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) {
//实现自己的逻辑
//记得替换fragment hostFragmentManager .beginTransaction() .replace(R.id.nav_host_fragment_activity_main, new DashboardFragment()) .commit(); } });
这里要注意重置监听事件后,会覆盖掉之前框架里的实现,所以自己在加上替换fragment。
四、replace fragment的时候,先执行了新的fragment的onCreateView,然后又执行了原有fragment的onDestroyView(),如果有在新的fragment的onCreateView之前要做的操作,就要在item onclick的时候做了,如果写在onDestroyView()里,可能对于一些逻辑顺序就不对了。
五、关于Timer,TimerTask,发现如果多次创建并cancel的话,在当前的fragment里销毁这些Timer和TimerTask没什么问题,但是,如果在其他fragment里去销毁,就不起作用了。
注:由于时间紧没有做太详细的研究,大家一切以自己的实际测试情况为准。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表