Its not blank
Its not blank

Reputation: 3095

ActionBar throws NullPointerException

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

Answers (2)

Casey Gibson
Casey Gibson

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

Ilya Izhovkin
Ilya Izhovkin

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

Related Questions