首页 > 解决方案 > 忽略导航()调用

问题描述

我在我的一个应用程序中使用了新的 android Navigation Framework。Application 的目的是充当启动器。

有时当我尝试更改片段(使用导航控制器导航)时,它不会更改片段而是记录

Ignoring navigate() call: FragmentManager has already saved its state

我知道在此之前有人问过这个问题忽略导航()调用:FragmentManager 已经保存了它的状态 ,但它没有解决方案。

我正在使用以下代码导航:

Navigation.findNavController(view).navigate(R.id.action_next, bundle)

标签: androidandroid-fragmentsnavigationandroid-architecture-components

解决方案


我遇到了同样的问题,在我的情况下,我试图在 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)
 }
 }
}

这就是我解决问题的方法。


推荐阅读