4

我无法弄清楚这一个。我自定义我的ActionBar(并且是我的应用程序是3.0+)代码在设备上运行良好(使用摩托罗拉xoom,如果它很重要)。但是当我在模拟器上运行它会引发NPE.This是我的代码为ActionBarActionBar抛出NullPointerException

/** 
* Customizes Action bar sets background color and assigns a layout to it 
*/ 
private void customActionBar() { 
    Log.v(TAG, "customizing ActionBar Entry"); 
    ActionBar actionBar = getActionBar(); 
    Log.v(TAG, "customizing ActionBar : "+actionBar.toString()); 
      //This is where i get NPE 
    actionBar.setBackgroundDrawable(new ColorDrawable(Color 
      .parseColor(Constants.COLOR))); 
    Log.v(TAG, "customizing ActionBar -Background color : "); 

    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.custom_action, null); 
    // lay.setLayoutParams(new ActionBar.LayoutParams(
    // android.app.ActionBar.LayoutParams.MATCH_PARENT, 
    // android.app.ActionBar.LayoutParams.MATCH_PARENT)); 
    actionBar.setCustomView(view); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    Log.v(TAG, "customizing ActionBar Exit"); 
} 

编辑:logcat的

V/>>> FullPdfViewerActivity(438): customizing ActionBar Entry 
D/AndroidRuntime(438): Shutting down VM 
W/dalvikvm(438): threadid=1: thread exiting with uncaught exception (group=0x40014760) 
E/AndroidRuntime(438): FATAL EXCEPTION: main 
E/AndroidRuntime(438): java.lang.RuntimeException: Unable to start activity         
ComponentInfo{com.test.android.tester/com.test.android.tester.core.AwesomePagerActivity}:   java.lang.NullPointerException 
E/AndroidRuntime(438): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) 
E/AndroidRuntime(438): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
E/AndroidRuntime(438): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
E/AndroidRuntime(438): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
E/AndroidRuntime(438): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(438): at android.os.Looper.loop(Looper.java:126) 
E/AndroidRuntime(438): at android.app.ActivityThread.main(ActivityThread.java:3997) 
E/AndroidRuntime(438): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(438): at java.lang.reflect.Method.invoke(Method.java:491) 
E/AndroidRuntime(438): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
E/AndroidRuntime(438): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
E/AndroidRuntime(438): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(438): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(438): at com.test.android.tester.core.AwesomePagerActivity.customActionBar(AwesomePagerActivity.java:227) 
E/AndroidRuntime(438): at com.test.android.tester.core.AwesomePagerActivity.onCreate(AwesomePagerActivity.java:187) 
E/AndroidRuntime(438): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
E/AndroidRuntime(438): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) 
E/AndroidRuntime(438): ... 11 more 

我把这个从我的onCreate()。我很担心它是否会为其他设备的工作吗?

TIA

+0

你能否提供logcat? – 2011-12-14 03:32:09

+0

早些时候它被setBackgroundDrawable。但是当我用toString()它显示NPE.Its那里在评论 – 2011-12-14 03:33:04

回答

10

我认为,getActionBar()返回null。我看到getActionBar()setContentView()之前被调用的行为,但只在Android 3.0和3.1上,在Android 3.2上没有关系。 尝试拨打setContentView,然后再自定义操作栏

0

请记住,在某些情况下,您可能需要在onActivityCreated中执行任何呼叫,因为视图可能未准备就绪。

相关问题