0

AとBの2つのアクティビティがあります。Aには次のようなボタンBTNがあります。

Intent myIntent = new Intent(A.this, B.class);
startActivityForResult(myIntent, B_VIEW);
  1. BTNをクリックします
  2. 次に、Bでfinish()を実行する戻るボタンをクリックします。
  3. 次に、再び開くボタンBTNをすばやく押しますB。

問題はB.onDestroy()、前の(ステップ2)によって引き起こされたfinish()がまだ実行されていない場合、今実行されるため、Bが閉じることです:-(

まだ実行されていない場合、Bを再度開いてもB.finish()が起動しないようにしたいのですが。どうすればよいですか。

4

1 に答える 1

0

この種のプロセスを処理する方法を最初からやり直したほうがよいでしょう。

最善の策は、キー データを のバンドルにパッケージ化し、onSaveInstanceStateそのバンドルが関数に存在するかどうかを確認することですonCreate(Bundle)。このようなものはうまくいくでしょう(大部分はAndroid Docsからコピーされたものです)

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

public void onCreate(Bundle savedInstanceState)
{
    if (savedInstanceState==null)
    { //This is the first time starting
        mCurrentScore=0;
        mCurrentLevel=1;
    }
    else
    {
        mCurrentScore=savedInstanceState.getInt(STATE_SCORE);
        mCurrentLevel=savedInstanceState.getInt(STATE_Level);
    }
}
于 2013-01-22T14:27:47.820 に答える