【问题标题】:clear bundle when back button pressed按下后退按钮时清除捆绑包
【发布时间】:2012-08-20 17:01:11
【问题描述】:

我在活动中使用片段(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() 中?

【问题讨论】:

    标签: android bundle onkeydown


    【解决方案1】:

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

    在我的扩展 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);
    }
    

    它可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多