我目前有导航抽屉,操作栏(没有工具栏),以及我定义为父Theme.AppCompat.Light
的样式。我想留在actionbar,但是当我使用那个父母时,我会变成以下错误:
"Attempt to invoke virtual method 'android.content.Context android.app.ActionBar.getThemedContext()' on a null object reference"
该代码中的:
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActionBar().getThemedContext(),
R.layout.navdrawer_item_row,
android.R.id.text1,
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
}));
有人解决建议吗? 提前致谢
答案 0 :(得分:2)
您需要使用getSupportActionBar()
代替getActionBar()
。在代码中更改所有出现的内容。
以下是更正后的代码:
ActionBar ab = getSupportActionBar();
mDrawerListView.setAdapter(new ArrayAdapter<String>(
ab.getThemedContext(),
R.layout.navdrawer_item_row,
android.R.id.text1,
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
}));
别忘了导入android.support.v7.app.ActionBar
同样在样式中,将父级更改为Theme.AppCompat.Light.DarkActionBar
答案 1 :(得分:2)
以上都不适合我。实际工作的是删除:
来自android:theme="...."
文件中application
xml标记的AndroidManifest.xml
。希望这有助于拯救某人我的斗争。
当我使用API 25在Android Studio 2.3.3中创建导航抽屉活动时,会出现此问题。
答案 2 :(得分:0)
要使用AppCompat主题,您的活动必须扩展AppCompatActivity(或已弃用的ActionBarActivity),并获取操作栏调用getSupportActionBar()方法。