带有AppCompat和普通操作栏的导航抽屉?

时间:2015-07-04 16:29:39

标签: android android-actionbar android-appcompat

我目前有导航抽屉,操作栏(没有工具栏),以及我定义为父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),
            }));

有人解决建议吗? 提前致谢

3 个答案:

答案 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()方法。