android - 忽略导航()调用
问题描述
我在我的一个应用程序中使用了新的 android Navigation Framework。Application 的目的是充当启动器。
有时当我尝试更改片段(使用导航控制器导航)时,它不会更改片段而是记录
Ignoring navigate() call: FragmentManager has already saved its state
我知道在此之前有人问过这个问题忽略导航()调用:FragmentManager 已经保存了它的状态 ,但它没有解决方案。
我正在使用以下代码导航:
Navigation.findNavController(view).navigate(R.id.action_next, bundle)
解决方案
我遇到了同样的问题,在我的情况下,我试图在 Mopub 广告回调 onInterstitialDismissed 中使用 navigate(),并且正在获取此信息。
我在这种情况下使用 LiveData 的解决方案如下:
private var dismissState = MutableLiveData<Int>(0)
mMobupInterStitialAd?.interstitialAdListener = object : MoPubInterstitial.InterstitialAdListener {
override fun onInterstitialDismissed() {
dismissState.value=1
}
}
override fun onViewCreated() {
dismissState.observe(viewLifecycleOwner) {
if(it == 1) {
findNavController.navigate(R.id.fragmentAtoFragmentB)
}
}
}
这就是我解决问题的方法。
推荐阅读
- node.js - NodeJS Sequlize 用户注册
- c++ - 删除抽象类中的 UnsortedSequenceTable
- javascript - 我不能添加超过 2 个 document.querySelector().addEventListener()
- python-3.x - 股票代码的公司名称
- go - 构建 Go 项目时出现“包 XXX 不在 GOROOT 中”
- javascript - 华丽的弹出视频在后台问题上运行
- arrays - AND 数组公式
- unix - Unix 什么是 /dev/cua* 设备?它是用来做什么的?
- python - 使用 FileBrowse 时在 PySimpleGui 中冻结
- java - 在 Java 中,我将如何打印类似于座位表的二维数组?