我的功能菜单使用的是一个Activity,通过Navigation来控制跳转,每个功能界面是都一个Fragment通常的跳转都是从菜单界面的Fragment(Fm) 跳转到相应的功能界面Fragment(Fn),如 Fm→ F1、Fm→F2、Fm→F3 等但是有个需求是,当有消息推送时,在点击了消息后,需要根据消息内容跳转到相应界面。如果此时处于菜单界面Fm,那么好说,我可以将Action的Id作为参数,实现跳转。但如果此时处于F1界面,消息需要跳转到F3界面,系统中没有这个跳转的Action,这种情况下该如何实现跳转?PS:我不可能将所有的功能界面Fragment之间都做连线,功能界面太多了本人初学Android开发,设计思路可能有诸多不足之处,望各位大神指教
解决方案 »
- sqlite3数据库用工具加密了,但不知道怎么实现在程序里打开
- android jni 用skia画图,运行后模拟器上没显示,求解啊
- 请问android如何实现模式对话框 ?
- ACTION_BATTERY_CHANGED什么时候广播?
- android Listview 的问题
- java基础问题,高手帮忙解析下代码
- android sharedpreference 背景图片怎样添加?
- 关于电信天翼机的CDMA基站定位方法
- Andriod Atom x86模拟器启动报错。网上的教程都旧了。跟新版完全不一样啊。怎么处理?
- 新手关于gradle的一个简单问题
- Fragment中按钮的页面跳转
- sqlite3在android studio中插入数据报错
NavController navController = Navigation.findNavController(v);
navController.navigate(R.id.fragment_target));
activity:
private fun gotoGongDan(){
SpUtil.writeBoolean(this, KEY_GOTO_TARGET, true)
when(val fragment = getCurrentFragment()){
is BaseFragment -> fragment.gotoTargetFragment()
}
}basefragment:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
gotoTargetFragment()
}fun gotoTargetFragment(){
if (SpUtil.readBoolean(MyApp.instance, KEY_GOTO_TARGET, false)){
view?.let{
if (layoutId != R.layout.fragment_home){
Navigation.findNavController(it).popBackStack()
}else{
Navigation.findNavController(it).navigate(R.id.action_homeFragment_to_targetFragment)
SpUtil.writeBoolean(MyApp.instance, KEY_GOTO_TARGET, false)
}
}
}
}
点进去看可能源码,居然在BottomNavigationView 的setOnNavigationItemSelectedListener里面直接根据menuItem 的id 做跳转,navController.navigate(item.getItemId(), null, options); 随便加个判断也行。Navigation 上次看的时候有个singinTop的效果,题主知道吗