MVP-Mosby-Api10:NoSuchMethodError android.support.v4.app.FragmentActivity.isChangingConfigurations

MVP-Mosby-Api10: NoSuchMethodError android.support.v4.app.FragmentActivity.isChangingConfigurations

我在 crashlytics 面板上收到此错误:

Fatal Exception: java.lang.NoSuchMethodError
android.support.v4.app.FragmentActivity.isChangingConfigurations
com.hannesdorfmann.mosby.mvp.MvpFragment.shouldInstanceBeRetained (MvpFragment.java:91)
com.hannesdorfmann.mosby.mvp.delegate.MvpInternalDelegate.detachView (MvpInternalDelegate.java:70)
com.hannesdorfmann.mosby.mvp.delegate.FragmentMvpDelegateImpl.onDestroyView (FragmentMvpDelegateImpl.java:73)
com.hannesdorfmann.mosby.mvp.MvpFragment.onDestroyView (MvpFragment.java:106)
com.hannesdorfmann.mosby.mvp.MvpFragment.shouldInstanceBeRetained (MvpFragment.java:91)

我覆盖了库的清单以将其与 api level 10 一起使用,并且我已经在 android 2.3.3 上对其进行了测试并且它工作正常!但现在我在 crashlytics 上看到了这个崩溃。嗨,我可以为我的版本修复这个问题吗?崩溃与 api 10 有关吗?因为该方法是针对 support v4 库的,所以我不明白为什么会这样。

是的,方法 isChangingConfigurations() 已在 API 11 中引入: https://developer.android.com/reference/android/app/Activity.html#isChangingConfigurations()

作为android.app.Activity平台的一部分class(不是android.support.v4.app.FragmentActivity的一部分,而是FragmentActivity extends Activity)。

因此,这不适用于 API < 11。

您可以在 Activity 中实施 isChangingConfigurations() 并调用 super.isChangingConfigurations() if API >=11 或者如果 (API < 11) 实现你自己的东西。您可能想查看 Activities 源代码,但我不确定如何向后移植。 https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java#L5152

如果 API < 11,您可以尝试 return false。这意味着 View 的状态(和 Presenter)将无法在屏幕方向更改后继续存在。免责声明:这也可能会导致一些我现在不知道的其他不需要的副作用,并且可能会破坏 Mosby 或支持库的任何未来版本。