2013-06-02 3 views
0

음, lib 셜록을 사용하고 있으며 버전 2.3의 안드로이드에서는 문제없이 작동하는 조각을 구현했습니다.하지만 안드로이드 버전 4.0에서 실행하면 NullPointerException 오류가 발생하고 누군가가 도울 수 있으므로 Android 용 프로그래밍에 익숙하지 않습니다. 내 수업과 [오류] [1]이 아래에 있습니다.조각과 Sherlock을 사용하여 버전 4.0에서 버그가 발생했습니다.

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 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이 발생합니다 - 답변을 수락하고 새로운 질문을 열면 좋을 것입니다! 올바른 코드를 추가하십시오. 여기에 새 질문에 대한 링크가 표시 될 수 있으므로 알림을 받게됩니다. –

관련 문제