java - 使用 DrawerLayout 后退按钮返回到上一个 Activity

标签 java android xml navigation-drawer

我已经成功地利用抽屉布局设置了一个抽屉导航。我发现删除这行简单的代码会将汉堡包图标更改为后退按钮:

mDrawerToggle.syncState();

但是,当我确实想返回到上一个 Activity 时,当我单击后退按钮时它仍在打开抽屉导航。

我知道我可以简单地设置一个 onClickListener,但我认为 Android 有一种更原生的方式来导航到上一个屏幕。这是我的代码:'

onCreate():

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
            toolbar,  /* nav drawer icon to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description */
            R.string.drawer_close  /* "close drawer" description */
    ) {

        /**
         * Called when a drawer has settled in a completely closed state.
         */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            isOpen = false;
        }

        /**
         * Called when a drawer has settled in a completely open state.
         */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            isOpen = true;
        }
    };
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    ArrayList<String> drawerTitleArray = new ArrayList<>();
    drawerTitleArray.add(0, "TEST");
    drawerTitleArray.add(1, "TEST 1");
    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, drawerTitleArray));

其他:

  @Override
public boolean onOptionsItemSelected(MenuItem item){
    return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}


@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

最佳答案

在抽屉 Activity 的 onOptionsItemSelected() 中:

@Override
public boolean onOptionsItemSelected(MenuItem item){
    if (item.getItemId() == android.R.id.home) {
        super.onBackPressed();
        return true;
    }
    else
        return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}

关于java - 使用 DrawerLayout 后退按钮返回到上一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546125/

相关文章:

服务器或客户端的 Android 分页

android - 在 Android 主屏幕小部件中可以使用 Thread 而不是 Service 吗?

javascript - 使用 javascript 在 HTML 中导入 XML

xml - "find"是否按顺序返回节点?

java - 安卓 : setonclicklistener in adapterview cannot be applied

java - 如何将 Getopt 错误消息的输出重定向到字符串?

java - 如何在 Java6 中禁用约束检查(Netscape 证书类型)?

java - 来自 JTextArea Java 的 ActionListener

当应用程序被杀死时,Android 广播接收器不工作

sql - 从 SQL Server 2008 中的 XML 节点获取最大值