2013-06-02 14 views
0

好吧,我正在使用lib Sherlock並實現了一個在2.3版本的android中沒有問題的片段,但是當我在android版本4.0上運行它時NullPointerException錯誤發生,有人可以幫助,我是新的android編程。 我的課程和[錯誤] [1]如下。使用片段和Sherlock並去版本4.0中的bug

public class MainActivity extends SherlockFragmentActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

//   Getting an instance of action bar 
     ActionBar actionBar = getSupportActionBar(); 
//   
//  // Enabling Tab Navigation mode for this action bar 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
//   
//  // Enabling Title 
     actionBar.setDisplayShowTitleEnabled(true); 
//   
//  // Creating Android Tab 
     Tab tab1 = actionBar.newTab() 
          .setText("Android") 
          .setTabListener(new CustomTabListener<AndroidFragment>(this, "android", AndroidFragment.class)) 
          .setIcon(R.drawable.android); 
//   
//  // Adding Android Tab to acton bar 
     actionBar.addTab(tab1); 
//   
     // Creating Apple Tab 
     Tab tab2 = actionBar.newTab() 
       .setText("Apple") 
       .setTabListener(new CustomTabListener<AppleFragment>(this, "apple", AppleFragment.class)) 
       .setIcon(R.drawable.apple); 

     // Adding Apple Tab to action bar 
     actionBar.addTab(tab2);   
//   
//  // Orientation Change Occurred 
     if(savedInstanceState!=null){ 
      int currentTabIndex = savedInstanceState.getInt("apple"); 
      actionBar.setSelectedNavigationItem(currentTabIndex); 
     } 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     int currentTabIndex = getSupportActionBar().getSelectedNavigationIndex(); 
     outState.putInt("tab_index", currentTabIndex); 
     super.onSaveInstanceState(outState); 
    } 
} 



logcat in text format 



06-06 04:33:00.496: E/AndroidRuntime(619): FATAL EXCEPTION: main 
06-06 04:33:00.496: E/AndroidRuntime(619): java.lang.RuntimeException: Unable to start activity ComponentInfo{in.wptrafficanalyzer.actionbarsherlocknavtabwithimages/in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.MainActivity}: java.lang.NullPointerException 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.os.Looper.loop(Looper.java:137) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread.main(ActivityThread.java:4340) 
06-06 04:33:00.496: E/AndroidRuntime(619): at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 04:33:00.496: E/AndroidRuntime(619): at java.lang.reflect.Method.invoke(Method.java:511) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-06 04:33:00.496: E/AndroidRuntime(619): at dalvik.system.NativeStart.main(Native Method) 
06-06 04:33:00.496: E/AndroidRuntime(619): Caused by: java.lang.NullPointerException 
06-06 04:33:00.496: E/AndroidRuntime(619): at in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.CustomTabListener.onTabSelected(CustomTabListener.java:32) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.actionbarsherlock.internal.app.ActionBarWrapper$TabWrapper.onTabSelected(ActionBarWrapper.java:338) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:512) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:441) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:427) 
06-06 04:33:00.496: E/AndroidRuntime(619): at com.actionbarsherlock.internal.app.ActionBarWrapper.addTab(ActionBarWrapper.java:371) 
06-06 04:33:00.496: E/AndroidRuntime(619): at in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.MainActivity.onCreate(MainActivity.java:31) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.Activity.performCreate(Activity.java:4465) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-06 04:33:00.496: E/AndroidRuntime(619): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
06-06 04:33:00.496: E/AndroidRuntime(619): ... 11 more 
+0

請將完整的logcat作爲文本添加到這個問題 - 這至少是完整的堆棧跟蹤,包括任何「由堆棧引起」。 –

+0

嗨Wolfram Rittmeyer把logcat的圖像,這個期間看到這個比較中發生的錯誤,如果(savedInstanceState!= null){ int int currentTabIndex = savedInstanceState.getInt(「apple」); actionBar.setSelectedNavigationItem(currentTabIndex); } 但仍想不到另一種設置SelectedNavigationItem的方式。已經需要。 –

+0

未來:真的把logcat作爲文本發佈。並**添加所有的異常**。你的截圖結束於有趣的東西開始。 –

回答

0

顯然你的savedInstanceState不包含鍵「apple」的值。像這樣做,而不是:

int currentTabIndex = savedInstanceState.getInt("apple", 0); 

在這種情況下,使用默認值,你沒有得到一個NullPointerException

+0

嗨Wolfram Rittmeyer,我嘗試了我開始的方式,但現在錯誤發生在第31行,它被添加到tab1。 logcat在文本格式下面是代碼,並且完全沒有理由丟失一塊。 –

+0

這個新的錯誤發生在你的onTabSelected()方法中 - 它不包含在源代碼中。這實際上是一個*新問題,因爲我回答了你的第一個問題。它恰好是一次NullPointerException - 接受答案並開啓一個新問題會很好!並添加正確的代碼。你可以在這裏鏈接到新的問題,這樣我會收到一個關於它的通知。 –

相關問題