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。