在导航抽屉中访问相同的片段会清除其内容

时间:2016-12-20 20:07:05

标签: android android-fragments

我有Fragment A允许用户通过点击按钮访问Fragment B,当在B上执行操作时,用户被重定向到Fragment C以检索返回A之前的最后一点信息 (A - > B - > C - > A)。

执行此操作后,如果我打开Navigation Drawer并点击我当前正在使用的Fragment(A),其内容就会消失,只剩下抽屉本身。

我无法解释背后的原因。

以下是我保留Navigation DrawerFragment州的方式:

  // User clicks on an item in Nav. Drawer, call this method
  private Fragment checkFragmentState(int itemId) {
    Fragment fragment = null;

    switch (itemId) {
        // HOME
        case R.id.nav_home:
            if (home == null) {
                fragment = new Home();
                home = fragment;
            } else
                fragment = home;
            break;
        // SEARCH CARD
        case R.id.nav_searchCard:
            if (searchCard == null) {
                fragment = new SearchCard();
                searchCard = fragment;
            } else
                fragment = searchCard;
            break;        
    }
    return fragment;
}

当我的用户点击抽屉中的元素时,我会调用此方法,基本上它会检查是否已创建Fragment,如果是,则会保存当前存在的元素并将其用于显示。 / p>

什么可能导致这种奇怪的行为?

1 个答案:

答案 0 :(得分:0)

每次只需启动一个新实例

// User clicks on an item in Nav. Drawer, call this method
private Fragment checkFragmentState(int itemId) {

    Fragment fragment = null;

    switch (itemId) {
        case R.id.nav_home:
            fragment = new Home();
            break;
        case R.id.nav_searchCard:
            fragment = new SearchCard();
            break;    
        default:
            fragment = new Fragment();    
    }

    return fragment;
}