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

Android java.lang.NoSuchMethodError:Activity.isDestroyed低于Api 17句柄,android,android-savedstate,Android,Android Savedstate,我的应用程序支持最低版本api 15。和isDestroyed()方法支持最小api 17 因此,当我使用此方法时,api 17下没有此类方法错误 用户按下主页按钮并使用其他应用程序。“打开我的应用程序”活动实例被销毁后,当我使用此活动实例时,我收到一个错误: Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at andro

我的应用程序支持最低版本api 15。和
isDestroyed()
方法支持最小api 17

因此,当我使用此方法时,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)

我能做什么

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

您可以改为使用,也可以不使用
isDestroyed()
。我想您还可以检查
getActivity()
是否为null,并仅在它为非null时提交。如果片段被分离,它将是空的

[编辑]

您还可以使用提供此方法的支持库:


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

您可能在OnSaveInstanceTestate之后提交了一个片段,或者来自android无法保证能够恢复状态的其他位置

您可以改为使用,也可以不使用
isDestroyed()
。我想您还可以检查
getActivity()
是否为null,并仅在它为非null时提交。如果片段被分离,它将是空的

[编辑]

您还可以使用提供此方法的支持库:

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

我也遇到了同样的问题。 我在活动中创建了一个布尔变量
destroy
,并在
onDestroy()
中将其设置为
true
,在
onCreate()
中将其设置为
false
。然后,在变量
销毁后,我在您的位置进行了检查,而不是调用方法
isDestroyed()
,该方法不起作用

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

我也有同样的问题。 我在活动中创建了一个布尔变量
destroy
,并在
onDestroy()
中将其设置为
true
,在
onCreate()
中将其设置为
false
。然后,在变量
销毁后,我在您的位置进行了检查,而不是调用方法
isDestroyed()
,该方法不起作用


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

是的,我使用支持库。然后检查您是否正在使用
getActivity().getSupportFragmentManager().isDestroyed()如果用户的手机低于api 17,我会得到一个错误没有这样的方法错误。并且可能是getActivity()返回null。
getActivity
不需要调用。在
android.support.v4.app.Fragment
派生类中,您可以直接使用
getFragmentManager()
,它返回
android.support.v4.app.FragmentManager
。是的,我使用支持库。然后检查您是否使用
getActivity().getSupportFragmentManager().isDestroyed()如果用户的手机低于api 17,我会得到一个错误没有这样的方法错误。并且可能是getActivity()返回null。
getActivity
不需要调用。在
android.support.v4.app.Fragment
派生类中,您可以直接使用
getFragmentManager()
返回
android.support.v4.app.FragmentManager
。在片段检查中添加()检查片段是否添加到布局中。另外,您的错误“IllegalStateException”是因为您在完成活动的onSaveInstanceState方法后执行片段事务。如果您可以在完成某些事件后忽略片段事务,则可以在片段中为onSaveInstanceState调用管理一个标志,在执行片段事务时,如果这是真的,那么只需跳过事务并设置一个片段,这样在resume方法中,如果设置了标志,您就可以使用popback堆栈…希望它对您有用…在fragment check isAdded()中,检查片段是否添加到布局中。另外,您的错误“IllegalStateException”是因为您在完成活动的onSaveInstanceState方法后执行片段事务。如果您可以在完成某些事件后忽略片段事务,那么您可以在片段中为onSaveInstanceState调用管理一个标志,在片段事务时,如果这是真的,那么只需跳过事务并设置一个frag,这样在resume方法中,如果设置了标志,您可以弹出堆栈…希望它对您有用。。。