Android:finish()刷新活动

时间:2011-04-13 10:08:14

标签: android android-activity

我有活动A和B.活动A使用以下代码调用B:

Intent iSettings = new Intent(A.this, B.class);
startActivityForResult(iSettings, ACTIVITY_SAVE_PREF);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
startActivity(iSettings);

活动B完成并按下具有以下代码的BACK按钮返回活动A:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Bundle bundle = new Bundle();
        bundle.putBooleanArray(KEY_PREFERENCES, value);

        Intent mIntent = new Intent();
        mIntent.putExtras(bundle);
        setResult(RESULT_OK, mIntent);
        finish();
        overridePendingTransition(R.anim.fadein, R.anim.fadeout);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

我的问题是,活动B刷新到第一个状态,它被活动A在第一个onKeyDown Back上调用。活动B仅在第二个onKeyDown Back完成并成功返回活动A.

有人可以帮助我,告诉我,如果我错过了什么吗? 非常感谢提前!

2 个答案:

答案 0 :(得分:2)

Intent iSettings = new Intent(A.this, B.class);
startActivityForResult(iSettings, ACTIVITY_SAVE_PREF); //here
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
startActivity(iSettings); // and here

你开始你的活动两次,所以你认为是刷新,只是你关闭第二个活动而第一个活动就在它背后

答案 1 :(得分:0)

你避免使用两个StartActivity ... 只有一个是足够的...因为如果被叫两次......一个活动落后于另一个活动...