Android ActionBar NullPointerException

问题描述 投票:6回答:5

我想启用Android ActionBar,但是对我来说不起作用。

这里是我的MainActivity

public void onCreate(Bundle savedInstanceState) {

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);


        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        ActionBar actionBar = getActionBar();
        actionBar.show();
        //more code............

这里是logcat:

03-04 16:31:09.423: E/AndroidRuntime(1441): FATAL EXCEPTION: main
03-04 16:31:09.423: E/AndroidRuntime(1441): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.salebook/com.example.salebook.MainActivity}: java.lang.NullPointerException
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.os.Looper.loop(Looper.java:137)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at java.lang.reflect.Method.invokeNative(Native Method)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at java.lang.reflect.Method.invoke(Method.java:511)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at dalvik.system.NativeStart.main(Native Method)
03-04 16:31:09.423: E/AndroidRuntime(1441): Caused by: java.lang.NullPointerException
03-04 16:31:09.423: E/AndroidRuntime(1441):     at com.example.salebook.MainActivity.onCreate(MainActivity.java:130)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.Activity.performCreate(Activity.java:5104)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-04 16:31:09.423: E/AndroidRuntime(1441):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-04 16:31:09.423: E/AndroidRuntime(1441):     ... 11 more

第130行是anctionBar.show(),我在res / menu / menu.xml中:]

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/itemid_0"
        android:title="Action Item 0"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="0"
        android:showAsAction="ifRoom|withText" />
    <item android:id="@+id/itemid_1"
        android:title="Action Item 1"
        android:orderInCategory="0" />
    <item android:id="@+id/itemid_2"
        android:title="Action Item 2"
        android:orderInCategory="0" />
    <item android:id="@+id/itemid_3"
        android:title="Action Item 3"
        android:orderInCategory="0" />
</menu>

我没有发现问题。希望有人帮助我。

谢谢。

也使用appThem样式:

<style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowActionBar">true</item>
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
android android-actionbar
5个回答
8
投票

您的操作栏返回空值,因为您没有操作栏,但是您正在使用getActionbar()请求

请确保您具有显示操作栏的窗口功能,这是显示操作栏所必需的。检查以下链接以获取更多详细信息。...检查此问题getActionBar returns null,也请检查此链接以获取有关您的问题的更多信息http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html


6
投票

您删除

android:theme="@style/AppTheme"

在AndroidManifest.xml中的“应用程序”中


1
投票

如果删除actionBar.show()行,您实际上看到一个操作栏吗?如果不是,则可能与您的主题相关,例如Theme.Light.NoActionBar


0
投票

转到AndroidManifest.xml并替换

android:theme="@style/AppTheme"

作者

android:theme="@android:style/Theme.Holo.Light.DarkActionBar"

0
投票

步骤01:

更改您的班级家长。 AppCompatActivity活动

即:

public class BluetoothActivity extends AppCompatActivity {
//Your Code
}

步骤02:

如下创建全局变量。 (我正在使用androidx。所以这就是导入的样子)

androidx.appcompat.app.ActionBar actionBar;

步骤03:

使用黑色的操作栏,如下所示。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Your style -->
</style>

步骤04:

分配getSupportActionBar();变量,您可以在onCreate方法中将其创建为全局变量。

setContentView(R.layout.activity_bluetooth);
actionBar = getSupportActionBar(); //Create this After setContentView
actionBar.show(); //this is for Experimental process only

步骤05:

现在您可以使用actionBar做任何您想做的事>

actionBar.setTitle("Profile");
© www.soinside.com 2019 - 2024. All rights reserved.