2012-08-22 61 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」可以解決問題。