Java 在4.0版中使用片段、夏洛克和going bug

Java 在4.0版中使用片段、夏洛克和going bug,java,android,android-fragments,actionbarsherlock,Java,Android,Android Fragments,Actionbarsherlock,伙计们,我正在使用lib Sherlock并实现了一个在安卓2.3版中运行没有问题的片段,但是当我在安卓4.0版上运行它时,出现了NullPointerException错误,有人可以帮助我,我对安卓编程是新手。 下面是我的班级和[error][1] public class MainActivity extends SherlockFragmentActivity { @Override public void onCreate(Bundle savedInstanceSt

伙计们,我正在使用lib Sherlock并实现了一个在安卓2.3版中运行没有问题的片段,但是当我在安卓4.0版上运行它时,出现了
NullPointerException
错误,有人可以帮助我,我对安卓编程是新手。 下面是我的班级和[error][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
公共类MainActivity扩展了SherlockFragmentActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//获取操作栏的实例
ActionBar ActionBar=getSupportActionBar();
//        
////为此操作栏启用选项卡导航模式
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
//        
////启用标题
actionBar.setDisplayShowTitleEnabled(true);
//        
////创建Android选项卡
Tab tab1=actionBar.newTab()
.setText(“安卓”)
.setTableListener(新的CustomTableListener(这个“android”,AndroidFragment.class))
.setIcon(R.drawable.android);
//        
////将Android选项卡添加到acton栏
actionBar.addTab(表1);
//        
//创建苹果标签
Tab tab2=actionBar.newTab()
.setText(“苹果”)
.setTableListener(新的CustomTableListener(这个“苹果”,AppleFragment.class))
.setIcon(R.drawable.apple);
//将Apple选项卡添加到操作栏
actionBar.addTab(表2);
//        
////发生了方向变化
如果(savedInstanceState!=null){
int currentTabIndex=savedInstanceState.getInt(“苹果”);
actionBar.setSelectedNavigationItem(currentTabIndex);
}
}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
int currentTabIndex=getSupportActionBar().getSelectedNavigationIndex();
outState.putInt(“tab_索引”,currentTabIndex);
super.onSaveInstanceState(超出状态);
}
}
文本格式的logcat
06-06 04:33:00.496:E/AndroidRuntime(619):致命异常:主
06-06 04:33:00.496:E/AndroidRuntime(619):java.lang.RuntimeException:无法启动活动组件信息{in.wptrafficanalyzer.actionbarsherlocknavtabwithimages/in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.MainActivity}:java.lang.NullPointerException
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.ActivityThread.access$600(ActivityThread.java:122)
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
06-06 04:33:00.496:E/AndroidRuntime(619):在android.os.Handler.dispatchMessage(Handler.java:99)上
06-06 04:33:00.496:E/AndroidRuntime(619):在android.os.Looper.loop(Looper.java:137)
06-06 04:33:00.496:E/AndroidRuntime(619):位于android.app.ActivityThread.main(ActivityThread.java:4340)
06-06 04:33:00.496:E/AndroidRuntime(619):位于java.lang.reflect.Method.Invokenactive(本机方法)
06-06 04:33:00.496:E/AndroidRuntime(619):位于java.lang.reflect.Method.invoke(Method.java:511)
06-06 04:33:00.496:E/AndroidRuntime(619):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-06 04:33:00.496:E/AndroidRuntime(619):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-06 04:33:00.496:E/AndroidRuntime(619):在dalvik.system.NativeStart.main(本机方法)
06-06 04:33:00.496:E/AndroidRuntime(619):由以下原因引起:java.lang.NullPointerException
06-06 04:33:00.496:E/AndroidRuntime(619):在in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.CustomTableListener.onTabSelected(CustomTableListener.java:32)
06-06 04:33:00.496:E/AndroidRuntime(619):在com.actionbarsherlock.internal.app.ActionBarWrapper$TabWrapper.onTabSelected(ActionBarWrapper.java:338)
06-06 04:33:00.496:E/AndroidRuntime(619):在com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:512)
06-06 04:33:00.496:E/AndroidRuntime(619):在com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:441)
06-06 04:33:00.496:E/AndroidRuntime(619):在com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:427)
06-06 04:33:00.496:E/AndroidRuntime(619):位于com.actionbarsherlock.internal.app.ActionBarWrapper.addTab(ActionBarWrapper.java:371)
06-06 04:33:00.496:E/AndroidRuntime(619):位于in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.MainActivity.onCreate(MainActivity.java:31)
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.Activity.performCreate(Activity.java:4465)上
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
06-06 04:33:00.496:E/AndroidRuntime(619):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
06-06 04:33:00.496:E/AndroidRuntime(619):。。。还有11个

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

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

在这种情况下,使用默认值,您不会得到
NullPointerException

请将完整的logcat作为文本添加到此问题-这至少是完整的stacktrace,包括任何“由”stacks引起的。hi Wolfram Rittmeyer放置logcat的图像,这段时间看到此比较中出现错误,如果(savedInstanceState!=null){int currentTabIndex=savedInstanceState.getInt(“apple”);actionBar.setSelectedNavigationItem(currentTabIndex);}但仍然无法想出另一种设置SelectedNavigationItem的方法。已经是必需的。将来:确实要将logcat作为文本发布。并添加所有异常