2 clcurie 11 clcurie_11 于 2013.05.14 11:41 提问

FragmentManagerImpl.popBackStackImmediate() 中的 NPE

当我在电话上快速的按 back 键时,会出现下面的异常:

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
    }

1个回答

LiDaming_and
LiDaming_and   2013.05.14 17:34

当你快速点击两次手机的返回键时,onBackPressed() 方法也会被调用2次,这就是问题之所在。
解决方法:

private boolean backAlreadyPressed = false;

@Override
public void onBackPressed()
{
    if (backAlreadyPressed)
    {
        return;
    }
    backAlreadyPressed = true;

    // old implementation of onBackPressed()
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
几种常见NPE
参考文章:http://www.cnblogs.com/mafly/p/trap.html 1、Map下的NPE       直接上代码: public class User { private Integer id; private String name; public Integer getId() { return id; }
java中几种常见的NPE问题
1、Map下的NPE       直接上代码: [java] view plain copy public class User {          private Integer id;          private String name;          public Integer getId() {     
JAVA NPE 是什么,空异常
http://blog.csdn.net/lsq_java_4/article/details/72824625这个链接有一些总结。可以一读。自动拆箱有可能产生NPE。类型转换(原子类型与包装类型转换)有可能产生 NPE。...
避免NPE
在java开发中中NPE异常是常见异常,在阿里java开发手册中就明确强调防止NPE是调用者的责任是程序员基本修养,本篇博客讲解利用一些小技巧避免NPE 1.1equals方法 public void equals() { //代表未知的对象,可能会是NULL也可能不是NULL Object unKnowObject = null; //这样某些情况下可能会抛出
NPE(null point Exception)产生的场景
public int f() {return Integer 对象},如果为 null,自动解箱抛 NPE。 数据库的查询结果可能为 null。 集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null。 远程调用对象时,一律要求进行空指针判断,防止 NPE。 对于Session 中获取的数据,建议 NPE 检查,避免空指针。 级联调用 obj.getA().getB().getC(
java Integer自动拆箱引发的NPE以及常量池导致的判等问题[-128 127]为常量池
Integer a1 = 250; Integer a2 = 250; Integer b1 = 25; Integer b2 = 25; Integer b3 =null; int b4 = 5; System.out.println(a1 == a2);//false System.out.println(b1 == b2);//true System
Snapdragon NPE SDK 的环境配置
上一篇博客简单描述了一下对Snapdragon NPE(Neural Processing Engine) SDK的初步了解,现在来看看配置环境,用Snapdragon NPE SDK进行人工智能的开发需要满足一些先决条件的,具体如下所述:    1.需要运行一个卷积模型的一个或多个垂直行业,包括手机、汽车、物联网、AR,机器人,和机器人     2.知道怎样去设置并且训练一个模型或者已经有一
java开发中预防NPE异常
在程序中为了预防NPE NullPointerException 空指针异常 要对接收到的各种数据类型、包装类型判空操作: // 实体类对象 User user = new User; if (user == null) { return ; } //String类型 String str ; if (StringUtils.isEmpty(s)) { return ;...
Snapdragon NPE SDK配置及用例
在上一篇博客中已经介绍了环境配置等,接下来接着看一下模型文件的转换和apk用例     首先是模型文件的创建,Snapdragon NPE SDK没有公共可用的模型文件,但是包含了一些脚本,这些脚本可以下载公共模型并转换成DLC(Deep Learning Container)模式,这些脚本在/models目录下。     1.在Caffe格式下下载并转换一个训练过的Alexnet模型   
Qualcomm的神经处理引擎 (二) Snapdragon NPE SDK 的环境配置
http://blog.csdn.net/s_jason/article/details/77979645     上一篇博客简单描述了一下对Snapdragon NPE(Neural Processing Engine) SDK的初步了解,现在来看看配置环境,用Snapdragon NPE SDK进行人工智能的开发需要满足一些先决条件的,具体如下所述:    1.需要运行一个卷积