在片段导航抽屉中。我在 getActionBar 中遇到错误。我能知道错误的原因和错误吗

Posted

技术标签:

【中文标题】在片段导航抽屉中。我在 getActionBar 中遇到错误。我能知道错误的原因和错误吗【英文标题】:In Fragment Navigation Drawer. I am getting error in getActionBar.Can I know why and what is the error 【发布时间】:2014-08-08 07:14:15 【问题描述】:

/** 抽屉关闭时调用 */

            public void onDrawerClosed(View view) 
           
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu();
           

/** 抽屉打开时调用 */

          public void onDrawerOpened(View drawerView) 
         
            getActionBar().setTitle("Select a river");
            invalidateOptionsMenu();
        

    ;

// 在 DrawerLayout 上设置 DrawerToggle

           mDrawerLayout.setDrawerListener(mDrawerToggle);

// 创建一个 ArrayAdapter 将项目添加到列表视图 mDrawerList

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getBaseContext(), 
                R.layout.drawer_list_item  , 
                getResources().getStringArray(R.array.rivers) 
            );

//在mDrawerList上设置适配器

    mDrawerList.setAdapter(adapter);

// 启用主页按钮

    getActionBar().setHomeButtonEnabled(true);

// 启用向上导航

    getActionBar().setDisplayHomeAsUpEnabled(true);

【问题讨论】:

你能发布 logcat 输出吗?确切的错误是什么? 你确定你是从 Fragment 调用这个吗?片段没有方法getActionBar();Read this. android Maninfest 文件中,如果我更改 min sdk 版本 14 意味着我得到了输出。但我使用 min sdk 版本 8 意味着我没有收到错误。 【参考方案1】:

尝试使用getSupportActionBar() 而不是getActionBar()

【讨论】:

如果我使用 getSupportActionBar 意味着我收到错误,我可以获得完整的代码 GunaSeelan。 你在使用appcompat库吗? 我可以知道你在哪里打电话,MainActivityNavigationDrawerFragment 好的,如果你使用getSupportActionBar 意味着你得到了什么错误? 错误是:方法 getSupportActionBar() 未定义类型 new ActionBarDrawerToggle()【参考方案2】:

Fragment 没有方法 getActionBar()。 片段通常用作活动用户界面的一部分,并为活动贡献自己的布局。要为片段提供布局,您必须实现 onCreateView() 回调方法,Android 系统会在片段绘制其布局时调用该方法。 因此,fragment 需要它所在的活动。

所以,试试 getActivity().getActionBar();

【讨论】:

以上是关于在片段导航抽屉中。我在 getActionBar 中遇到错误。我能知道错误的原因和错误吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在主片段中单击按钮时打开导航抽屉?

在 Android Studio 的默认导航抽屉模板中使用按钮在片段之间切换

从片段中的按钮单击打开导航抽屉(Kotlin)

如何在底部导航片段(或导航抽屉)之间传递数据?

从片段中禁用导航抽屉

像导航抽屉一样切换片段(带后退箭头)