I couldnt figure out this one. I am customizing my ActionBar (and yes my App is for 3.0+) The code runs fine on Device(using Motorola xoom ,if it matters) .But when i run this on 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 am worried if it will work for other devices??
TIA
I think, that getActionBar()
returns null. I saw this behavior when getActionBar()
was called before setContentView()
of activity, but only on Android 3.0 and 3.1, on Android 3.2 order does not matter.
Try to call setContentView
before customizing action bar
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With