0

好吧,伙计们,我正在使用 lib Sherlock 并实现了一个片段,该片段在 android 版本 2.3 中运行没有问题,但是当我在 android 版本 4.0 上运行它时NullPointerException发生错误,有人可以提供帮助,我是新手安卓编程。我的班级和[错误] [1]如下。

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
4

1 回答 1

0

显然,您savedInstanceState不包含键“apple”的值。改为这样做:

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

在这种情况下,使用默认值并且您不会获得NullPointerException.

于 2013-06-06T07:32:12.030 回答