导航抽屉主页按钮在打开其他活动并返回后无法打开抽屉。

3
我有一个特殊的情况,我有一个父Activity,它扩展了ActionBarActivity,在这个Activity中,我声明并初始化了我的DrawerLayout,并使用所有实现Navigation Drawer的样板代码。然后为了节省时间,我在我的代码中创建了新的Activities,这些Activities扩展了这个DrawerActivity,所以你可以在所有这些Activities中打开导航抽屉。
问题出现在这种情况下:
假设Activities是:
Activity A = [A]
Activity B = [B]

两个类都扩展了DrawerActivity

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

导航抽屉只有在您处于[A]时从主页按钮打开,但是当我从[B]按下返回按钮时,无法从主页按钮打开导航抽屉,但我可以滑动抽屉。请问是否有人能够解释一下我做错了什么,我正在想这是否与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个回答

3
请确保你正确覆盖了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语句吗?请参见上面的代码。 - AndyRoid
不用担心提供示例代码,将switch语句包含在if语句中解决了问题。谢谢Apurva! - AndyRoid
1
我遇到了相同的问题,但这个答案并没有解决它。 - Pankaj Nimgade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接