java.lang.NoSuchMethodError:Activity.isDestroyd低于Api 17句柄



我的应用程序支持最低版本的api 15。并且isDestroyed()方法支持min-api17。

所以当我使用这个方法时,api 17下面没有这样的方法错误。

用户按下主页按钮并使用其他应用程序。打开我的应用程序活动实例后被销毁,当我使用此活动实例时,我得到一个错误:

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
       at android.support.v4.app.FragmentManagerImpl.checkStateLoss(Unknown Source)
       at android.support.v4.app.FragmentManagerImpl.enqueueAction(Unknown Source)
       at android.support.v4.app.BackStackRecord.commitInternal(Unknown Source)
       at android.support.v4.app.BackStackRecord.commit(Unknown Source)

我能做什么?

您可能在onSaveInstantState之后,或者在android无法保证能够恢复状态的其他位置提交片段。

您可以使用commitAllowingStateLoss(),而不使用isDestroyed()。我想您也可以检查getActivity()是否为null,并且只有当它不是null时才提交。如果片段被分离,它将为null。

[编辑]

您也可以使用提供这种方法的支持库:

http://developer.android.com/reference/android/support/v4/app/FragmentManager.html#isDestroyed()

(奇怪,但从您的异常来看,您似乎正在使用支持库)

我也遇到了同样的问题。我在活动中创建了一个布尔变量destroyed,并在onDestroy()trueonCreate()false中设置它。然后我在变量destroyed之后检查了您的点,而不是调用方法isDestroyed(),这是不起作用的。

我知道这可能不是最好的解决方案,对你来说可能已经晚了,但它对我有效,我希望我能帮助别人。

最新更新