使用Theme.AppCompat.Light.DarkActionBar

时间:2015-05-28 06:18:15

标签: android android-actionbar

我已经将我的eclipse项目导入到Android工作室,一切正常。我有自定义操作栏

是这样的:创建活动的创建我有以下

 getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
 getActionBar().setCustomView(R.layout.bartitle);
 TextView textViewTitle = (TextView) findViewById(R.id.titleEDIT);
 textViewTitle.setText(res.getString(R.string.title));
 setContentView(R.layout.register);

现在我也为v21添加了Style。

版本21的Style.xml具有以下内容:

<resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowActionBar">true</item>
    </style>
</resources>

当我运行项目时:我得到一个白色屏幕并强制关闭,并显示以下错误日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.flm.sPar/com.flm.sPar.Register}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setCustomView(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setCustomView(int)' on a null object reference
        at com.flm.sPar.Register.onCreate(Register.java:71)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

我一直在努力解决这个问题。尝试在SO或Google上提供的所有解决方案,但无法解决问题。因此想到问一个问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用getSupportActionBar()而不是getActionBar()因为您正在使用AppCompat库。如果您正在使用v7 appcompat库,那么您的活动应该扩展AppCompatActivity而不是Activity。

在支持库的修订版22.1.0中不推荐使用ActionBarActivity,因此应根据用户在评论中的建议使用AppCompatActivity而不是ActionBarActivity。

希望这能解决您的问题:)