我需要在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>
答案 0 :(得分:3)
BaseActivity
必须extends
来自ActionBarActivity
而不是Activity
public class BaseActivity extends ActionBarActivity implements NavigationDrawerCallbacks {
使用getSupportActionBar();
获取 ActionBar
答案 1 :(得分:2)
您的问题是这两件事中的一件,或两者兼而有之。至少他们应该是,除非我疯了......
要么问题是你正在打电话
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()
尝试两者并告诉我哪些有效!
答案 2 :(得分:1)
您正在使用支持库(AppCompat),因此您必须致电getSupportActionBar()