在抽屉菜单单击后,用关闭的抽屉重新创建活

时间:2014-12-15 17:47:14

标签: android navigation-drawer

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

我试过这个:

private void drawerItemClicked(int position) {
    drawerLayout.closeDrawer(drawer);
    //...
    recreate();
}

但效果不佳。抽屉开始关闭,但屏幕黑色显示为秒,并且打开的抽屉会重新创建活动。

我是否必须自己处理抽屉状态onSaveInstanceState()或其他方式?

2 个答案:

答案 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()将完成基础(暂停状态)活动。这将基本上重建"你的活动。

相关问题