0

我在活动中使用片段(ListFragment)并保存所选项目以在屏幕旋转时恢复它。

@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("currentListIndex", mCurrentSelectedItemIndex);
    }

当用户单击“返回”时,我不想保存项目选择。我需要覆盖后退按钮并清除传递给我的活动的捆绑实例。

我真的不知道如何获取捆绑实例,我尝试使用全局变量,但是当我使用它时,我有一个 NullPointerException。

这是我的做法:

private Bundle bundle;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        bundle.clear();
    } 

    return super.onKeyDown(keyCode, event);
}

我在哪里可以检索我想要的信息(currentListIndex):在我的活动的 onCreate() / 我的详细信息片段的 onCreateView() 中?

4

1 回答 1

0

好的,我找到了解决方案。

在我扩展 ListFragment 的课程中​​:

// Restore last state for checked position (when screen orientation
        // change or activity resumed)
        if (savedInstanceState != null) {
            mCurrentSelectedItemIndex = savedInstanceState.getInt(
                    "currentListIndex", -1);
        }

在我的活动中:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    AccountBDD accountBdd = application.getAccountBdd();
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        mCurrentSelectedItemIndex = -1;
    }
    return super.onKeyDown(keyCode, event);
}

它有效

于 2012-08-20T09:01:11.303 回答