我在活动中使用片段(ListFragment)并保存所选项目以在屏幕旋转时恢复它。
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currentListIndex", mCurrentSelectedItemIndex);
}
当用户点击“返回”时,我不想保存项目选择。我需要覆盖后退按钮并清除传递给我的活动的包实例。
我真的不知道如何获取bundle实例,我试图使用全局var但是当我使用它时我有一个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()?
答案 0 :(得分: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);
}
并且有效