Reputation: 3095
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
Upvotes: 4
Views: 6978
Reputation: 2863
Keep in mind that in some circumstances, you may need to do any calls in onActivityCreated as the view may not be ready.
Upvotes: 0
Reputation: 3465
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
Upvotes: 10