Android java.lang.NullPointerException getActionBar()

时间:2015-02-09 09:51:08

标签: java android nullpointerexception

我试图实现一个Setting Activity类,但它给了我一个错误:

Caused by: java.lang.NullPointerException
            at com.example.andrei.sunshine.SettingsActivity.setupActionBar(SettingsActivity.java:58)
            at com.example.andrei.sunshine.SettingsActivity.onCreate(SettingsActivity.java:48)
            at android.app.Activity.performCreate(Activity.java:5264)

这是一行:getActionBar().setDisplayHomeAsUpEnabled(true);

AndroidManifest是:

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DetailActivity"
        android:label="@string/title_activity_detail"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.andrei.sunshine.MainActivity" />
    </activity>
    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.andrei.sunshine.MainActivity" />
    </activity>
</application>

请帮帮我

4 个答案:

答案 0 :(得分:2)

如果SettingsActivity延长ActionBarActivity,您的getActionBar();将可用。

public class SettingsActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourLayout);
        //If you use support library
        //getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

有关详细信息,请参阅documentation

答案 1 :(得分:0)

您应该查看此参考http://developer.android.com/intl/es/guide/topics/ui/actionbar.html

如果您支持的API级别低于11:

import android.support.v7.app.ActionBar

如果仅支持API级别11及更高级别:

import android.app.ActionBar

使用getSupportActionBar

而不是使用getActionBar

答案 2 :(得分:0)

如果您的主题是NoTitleBar或NoActionBar,或者您在getActionBar()

之前致电setContentView(R.layout.layout);,则可能会发生这种情况

答案 3 :(得分:0)

如果您使用appcompact ActionbarActivity,请尝试将其更改为getSupportActionBar()