gpt4 book ai didi

android - FragmentManagerImpl.popBackStackImmediate() 中的 NPE

转载 作者:行者123 更新时间:2023-11-29 00:31:00 25 4
gpt4 key购买 nike

当我在我的手机上快速按下返回、返回、返回时,出现以下异常:

java.lang.NullPointerException
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1378)
at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:437)
at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:452)
at android.app.Activity.onBackPressed(Activity.java:2123)
at com.swipemaster.activities.CommonActivity.onBackPressed(CommonActivity.java:16)
at com.swipemaster.activities.MainActivity.access$0(MainActivity.java:1)
at com.swipemaster.activities.MainActivity$1.run(MainActivity.java:62)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)

在 Android 4.0.4 和 2 种设备上测试:Sony Xperia MT27i 和 ST23i。在 2.2.1 和 Galaxy Mini 上不会出现此问题。谁能帮帮我?

CommonActivity 类:

public class CommonActivity extends Activity
{
@Override
public void onBackPressed()
{
MusicPlayer.continueMusic = true;
super.onBackPressed(); // this is CommonActivity.java:16
}

最佳答案

据我了解,问题出在以下函数中的调用 return popBackStackState(mActivity.mHandler, null, -1, 0); 中:

 @Override
public boolean popBackStackImmediate() {
checkStateLoss();
executePendingTransactions();
return popBackStackState(mActivity.mHandler, null, -1, 0);
}

来自 Android source .

所以,我认为真正的问题是:为什么 mActivity 在该函数(或某些特定于供应商的字段)中为空?

根据评论,该问题仅在单台设备上观察到,因此我可以提出以下建议:

  • 在其他设备上验证该问题是否可重现(因为在 android 4.0.4 中,FragmentManager.java:457 中没有代码);
  • 尝试为 API 15 或 API 16 构建应用并检查问题是否仍然存在;
  • 基于 this question回复,问题可能出在 onDestroy() 方法之一;
  • 调查应用程序代码以查明它的某些部分是否为所有 Activity 调用 finish() 或进行一些处理以退出应用程序(例如,尝试处理多次返回按作为退出应用程序) ;
  • 尝试锻炼一些技巧(例如以 100 毫秒的小延迟处理背部)。但是对于这种方式,我建议您确保问题是特定于供应商的,并将该黑客攻击置于 Build.MANUFACTURER 的检查之下。 ;

关于android - FragmentManagerImpl.popBackStackImmediate() 中的 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com