导航抽屉主页按钮在打开另一个活动并返回后不打开抽屉

Posted

技术标签:

【中文标题】导航抽屉主页按钮在打开另一个活动并返回后不打开抽屉【英文标题】:Nav Drawer Home Button does not open drawer after opening another activity and going back 【发布时间】:2015-05-17 10:51:57 【问题描述】:

我有一个特殊的情况,我有一个父 Activity 扩展 ActionBarActivity 在那个 Activity 我声明并初始化我的 DrawerLayout 与所有样板代码实现 导航抽屉

然后为了节省时间,我创建了新的Activities,它在我的代码中扩展了这个DrawerActivity,这样你就可以在所有这些活动中打开导航抽屉。

出现这种情况时会出现问题:

假设活动是:

Activity A = [A]
Activity B = [B]

两者都扩展DrawerActivity

[A] --- Open Drawer and Open --> [B] --- Press Back Button ---> [A]

当您在[A] 中时,导航抽屉从Home Button 打开,但是当我从[B] 按下返回按钮时,我无法从Home Button 打开导航抽屉,但我可以滑出抽屉。

有人可以向我解释我在这里做错了什么吗?我想知道ActionBarDrawerToggle.syncState() 是否有问题,但我尝试在所有可能的地方实现它,但并没有解决问题。

就像我上面提到的,所有样板代码都已经写好了,例如:

@Override
public boolean onOptionsItemSelected(MenuItem item) 
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in androidManifest.xml.
    int id = item.getItemId();
    switch (id) 
        case android.R.id.home:
            if (!mDrawerLayout.isDrawerOpen(recyclerView)) 
                mDrawerLayout.openDrawer(recyclerView);
                mActionBarDrawerToggle.syncState();
             else if (mDrawerLayout.isDrawerOpen(recyclerView)) 
                mDrawerLayout.closeDrawer(recyclerView);
                mActionBarDrawerToggle.syncState();
            
            break;
        case R.id.action_logout:
            new DeauthorizeTask().execute();
    
    return super.onOptionsItemSelected(item);

【问题讨论】:

【参考方案1】:

确保您已正确覆盖 onOptionsItemSelected()

@Override
public boolean onOptionsItemSelected(MenuItem item) 

    if (mDrawerToggle.onOptionsItemSelected(item)) 
      return true;
    
    // Handle your other action bar items...

    return super.onOptionsItemSelected(item);

【讨论】:

其实我可能忘记了你在 DrawerToggle 上调用 .onOptionItemSelected(item) 的部分。有什么方法可以建议您将其用于 switch 语句?请参阅上面的代码。 不用担心提供示例代码,用 if 语句围绕 switch 语句解决了问题。谢谢阿普尔瓦! 我遇到了同样的问题,但这个答案并没有解决它

以上是关于导航抽屉主页按钮在打开另一个活动并返回后不打开抽屉的主要内容,如果未能解决你的问题,请参考以下文章

通过单击导航抽屉上的项目打开虚假活动

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

如何使向上按钮返回而不是打开导航抽屉

导航抽屉活动:在按钮单击时从片段移动到片段

android-navigation 抽屉在活动更改时未打开

将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动