【问题标题】:Ignoring navigate() call忽略导航()调用
【发布时间】:2019-05-01 17:02:43
【问题描述】:
我在我的一个应用程序中使用新的 android Navigation Framework。
Application 的目的是充当启动器。
有时当我尝试更改片段(使用导航控制器导航)时,它不会更改片段而是记录
Ignoring navigate() call: FragmentManager has already saved its state
我知道之前有人问过这个问题Ignoring navigate() call: FragmentManager has already saved its state
但它没有解决方案。
我正在使用以下代码进行导航:
Navigation.findNavController(view).navigate(R.id.action_next, bundle)
【问题讨论】:
标签:
android
android-fragments
navigation
android-architecture-components
【解决方案1】:
我遇到了同样的问题,在我的情况下,我试图在 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)
}
}
}
这就是我解决问题的方法。