Android java.lang.NoSuchMethodError:Activity.isDestroyed低于Api 17句柄
我的应用程序支持最低版本api 15。和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
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方法中,如果设置了标志,您可以弹出堆栈…希望它对您有用。。。