getActionBar() 返回 null

getActionBar() returning null

我需要我的 actionbar 在 setContentView 之前准备好,因为它被 navDrawerFragment 使用,但此时:

public class BaseActivity extends Activity implements NavigationDrawerFragment.NavigationDrawerCallbacks {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_ACTION_BAR);
    Log.d("", getActionBar().toString());
    setContentView(R.layout.activity_base);
}

它正在返回 null

我的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/light_blue</item>
    <item name="colorPrimaryDark">@color/dark_blue</item>
    <item name="colorAccent">@color/dark_blue</item>
    <item name="android:windowBackground">@color/white</item>
    <item name="android:positiveButtonText">@color/white</item>
    <item name="android:windowActionBar">true</item>
</style>

以及清单中的声明:

<activity
    android:name=".controller.activity.BaseActivity"
    android:label="@string/app_name" >
</activity>

您的问题要么是这两件事之一,要么都是。至少他们应该是,除非我疯了..

要么是你打电话的问题

getActionBar()

在设置 contentView 之前 所以将其更改为

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.activity_base);
    Log.d("", getActionBar().toString());
}

就是你需要打电话

getSupportActionBar()

两者都试一下,告诉我哪个有效!

您正在使用支持库 (AppCompat),因此您必须调用 getSupportActionBar()

  1. 您的 BaseActivity 必须 extends 来自 ActionBarActivity 而不是 Activity

    public class BaseActivity extends ActionBarActivity implements NavigationDrawerCallbacks {

  2. 使用getSupportActionBar();得到ActionBar