我想在点击导航抽屉菜单并关闭此抽屉后重新创建活动。
我试过这个:
private void drawerItemClicked(int position) {
drawerLayout.closeDrawer(drawer);
//...
recreate();
}
但效果不佳。抽屉开始关闭,但屏幕黑色显示为秒,并且打开的抽屉会重新创建活动。
我是否必须自己处理抽屉状态onSaveInstanceState()
或其他方式?
答案 0 :(得分:1)
我知道这是一个老问题,但也许我的解决方案对其他人有用。我今天遇到了同样的问题。
显然问题是,在重新创建活动时框架还没有完全关闭导航抽屉。因此,我将recreate()调用移动到onDrawerClosed侦听器,如下所示:
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
//...
if(...)
recreate();
}
它完美地工作,并且当活动重新开始时抽屉保持不动。
答案 1 :(得分:0)
为了确保您干净地重新创建Activity而不必担心框架以recreate()
以意外方式处理某些内容,您可以通过创建新的Intent来显式声明Activity的全新实例。像
startActivity(new Intent(this, CurrentActivity.class));
finish();
通过Intent启动新活动后调用finish()
将完成基础(暂停状态)活动。这将基本上重建"你的活动。