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