2012-08-22 65 views
2

美好的一天。Android片段NullPointerException onBackPressed

我有一个应用程序,其中有一个主要活动,可容纳3个容器。每个容器都有一个“注入”的片段。在开始这个主要活动时,它强制显示第一个容器和片段,其他两个隐藏。在按钮点击时,应用程序移动到容纳另一个片段的第二个容器,依此类推。

而这个工程,它将前进到最后一个容器,并回到第一个容器与Android后退按钮。

问题是,如果我停在第二个片段,我尝试回到第一个,而不激活第三个,应用程序崩溃与以下错误:

java.lang.NullPointerException at 
pl.oke.arshop.activities.ARShopActivity.onBackPressed(ARShopActivity.java:155) 
at android.app.Activity.onKeyUp(Activity.java:1895) at 
android.view.KeyEvent.dispatch(KeyEvent.java:1281) at 
android.app.Activity.dispatchKeyEvent(Activity.java:2075) at 
android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2463) at 
android.view.ViewRoot.handleMessage(ViewRoot.java:1752) ... etc 

其中ARShopActivity.java: 155是:

@Override 
    public void onBackPressed() { 

     if (isVirtualRoomOpened) { 
      isVirtualRoomOpened = false; 
      showFurnitureFragments(); 
     } else if (isFurnitureFragmentOpened) { 
      isFurnitureFragmentOpened = false; 
      showMainFragment(); 
     } 

     super.onBackPressed(); 
     Log.d("Dab", " " + isVirtualRoomOpened + " " 
       + isFurnitureFragmentOpened + " " + isMainFragmentOpened); 

    } 
} 

有什么想法?谢谢。

回答

0

啊,errare humanum est,isVirtualRoomOpened变量是在创建最后一个片段时初始化的,所以当我尝试从第二个片段跳回第一个时,第一个条件的参数为null。

将关于片段的所有布尔变量设置为“false”可以解决问题。