2

// 这是我的主要活动

@Override
    protected void onResume() {
        super.onResume();
        System.out.println("onResume()");

        // getting the value form some other class(checking one the activity is started)
        try {
            bundle = getIntent().getExtras();
            myFlag = bundle.getBoolean("KEY");
        } catch (Exception e) {
            System.out.println(".......Error.......");
        }
}

我正在设置 myFlag=true,我的问题是当我改变方向(即重新启动活动)时,我想要 myFlag = false,但它仍然是真的......意味着我想在方向改变后清除捆绑值。我在 onDestroy() 方法中尝试了 bundle.clear() 和 bundle.remove("KEY") ,但没有工作。

这个我已经用了。。

@Override
    protected void onDestroy() {
        super.onDestroy();
        System.out.println("onDestroy()");
        if(bundle!=null) {
            bundle.clear();
                        // i also use the below statement
                       // bundle.remove("KEY");
        }
}
4

1 回答 1

3

看到这个,你可以有一个想法

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState != null) {
            if (savedInstanceState.getBoolean("activity_restarting")) {
                // activity is restarting... Don't check mFlag..for that do something something here :)
            }
        }

    }



    @Override
    protected void onSaveInstanceState(Bundle outState) {

        super.onSaveInstanceState(outState);

        outState.putBoolean("activity_restarting", true);

    }

我希望你现在可以处理

于 2012-12-12T09:56:08.607 回答