ActionBar throws a NullPointerException

I could not figure it out. I am setting up my ActionBar (and yes, my application is rated for 3.0+). The code works fine on the device (using Motorola xoom, if that matters). But when I run it on the emulator, it throws NPE. This is my code for ActionBar

/** * 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"); } 

EDIT: 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 

I call this from my onCreate (). I'm worried if it will work for other devices

TIA

+4
source share
2 answers

I think getActionBar() returns null. I saw this behavior when getActionBar() was called before setContentView() activity, but only on Android 3.0 and 3.1, on Android 3.2 the order does not matter. Try calling setContentView before customizing the action bar.

+10
source

Keep in mind that in some cases you may need any calls to onActivityCreated, as the view may not be ready.

0
source

Source: https://habr.com/ru/post/1386230/


All Articles