我正在我的一个应用程序中使用新的android导航框架。应用程序的目的是充当启动器。
有时,当我尝试更改片段(使用导航控制器导航(时,它不会更改片段,而是记录
Ignoring navigate() call: FragmentManager has already saved its state
我知道以前有人问过这个问题忽略navigation((调用:FragmentManager已经保存了它的状态但它没有解决方案。
我使用以下代码进行导航:
Navigation.findNavController(视图(Navigation(R.id.action_next,bundle(
我也遇到了同样的问题,在我的案例中,我试图在Mopub广告回调onInterstialDismissed中使用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)
}
}
}
这就是我解决问题的方法。