Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击“抽屉”菜单后,使用关闭的抽屉重新创建活动_Android_Navigation Drawer - Fatal编程技术网

Android 单击“抽屉”菜单后,使用关闭的抽屉重新创建活动

Android 单击“抽屉”菜单后,使用关闭的抽屉重新创建活动,android,navigation-drawer,Android,Navigation Drawer,单击导航抽屉菜单并关闭此抽屉后,我想重新创建活动 我试过这个: private void drawerItemClicked(int position) { drawerLayout.closeDrawer(drawer); //... recreate(); } 但效果不好。抽屉开始关闭,但屏幕会在几秒钟内变黑,活动将使用打开的抽屉重新创建 我必须自己用onSaveInstanceState()处理抽屉状态吗?或者有其他方法吗?以确保您干净地重新创建活动,而不必担心框

单击导航抽屉菜单并关闭此抽屉后,我想重新创建活动

我试过这个:

private void drawerItemClicked(int position) {
    drawerLayout.closeDrawer(drawer);
    //...
    recreate();
}
但效果不好。抽屉开始关闭,但屏幕会在几秒钟内变黑,活动将使用打开的抽屉重新创建


我必须自己用
onSaveInstanceState()处理抽屉状态吗?
或者有其他方法吗?

以确保您干净地重新创建活动,而不必担心框架用
重新创建()以意外的方式处理某些内容
通过创建新的意图,可以显式地声明活动的新实例。差不多

startActivity(new Intent(this, CurrentActivity.class));
finish();

通过Intent启动新活动后,调用
finish()
,将完成基础(暂停状态)活动。这将基本上“重新创建”您的活动。

我知道这是一个老问题,但也许我的解决方案对其他人有用。我今天遇到了同样的问题

显然,问题在于在重新创建活动时,框架没有完全关闭导航抽屉。因此,我将recreate()调用移动到onDrawerClosed侦听器,如下所示:

public void onDrawerClosed(View view) {
    super.onDrawerClosed(view);
    //...
    if(...)
        recreate();
}

它工作正常,当活动重新启动时,抽屉保持在原位。

还可以尝试将抽屉布置出来。closeDrawer(抽屉);在创建“活动”时,在中生成抽屉布局和抽屉全局scope@Softcoder它会不会弄乱把手旋转和打开的抽屉?看到这个了吗。。我希望它能帮助您通过一个新的意图来启动它,而不是重新创建(),然后在启动新的意图后调用finish。