0

何かを作ってから別の活動を始める活動があります。最初のアクティビティは、2番目のアクティビティを作成した後に終了する必要があります。この場合、デフォルトのonDestroy()でのみ終了するようにします。しかし、最初のアクティビティが実行されていないときにユーザーが戻るキー(ハードウェア1)を押すと、終了する前に関数を呼び出すようにします。それを達成するための穏やかな方法はありますか?バックキーのデフォルトのアクションをオーバーライドすることを考えていますが、それが唯一の最も洗練されたソリューションですか?

4

3 に答える 3

1

メソッドのオーバーライドonBackPressedはOKです。

public void onBackPressed ()

ユーザーが戻るキーを押したことをアクティビティが検出したときに呼び出されます。デフォルトの実装は単に現在のアクティビティを終了しますが、これをオーバーライドして、必要なことを行うことができます。

http://developer.android.com/reference/android/app/Activity.html#onBackPressed()


public void onBackPressed() {
    // do something.
    super.onBackPressed();
}
于 2013-01-31T19:37:13.620 に答える
1

最初のアクティビティで、終了したかどうかを示すフラグを宣言できます。

public class Activity1 extends Activity {
    private boolean workDone = false;

    . . .

    @Override
    protected void onDestroy() {
        if (!workDone) {
            specialFunction();
        }
        super.onDestroy();
    }
}

次に、 のどこかでActivity1、必要な作業が完了したら、 を設定しworkDone = trueます。

于 2013-01-31T19:31:03.353 に答える
0

onBackButtonPressed() をオーバーライドしてから super.onBackButtonPressed を呼び出すことができるので、スーパー クラスが行うことを見逃すことはありませんが、呼び出しに何かを追加することができます。onDestroy() についても同様です

この例では、utask は強制終了したい非同期タスクです。

    @Override
    protected void onStop() {
        utask.cancel(true);
        super.onStop();

    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        utask.cancel(true);
        super.onBackPressed();

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        utask.cancel(true);
        super.onDestroy();

    }
于 2013-01-31T19:30:28.570 に答える