2012-04-03 6 views
8

IntentstartActivityForResultを渡してアクティビティを実行するクラスAがあります。他の授業では、Bと言います。これはIntentとなり、アクティビティを再作成します。そのアクティビティのイベントをどのように聞くことができますか?結果のために開始されたアクティビティが実行中で、ユーザが「戻る」ボタンを押したので、何らかのアクションを実行したい。 どうすればいいですか? ありがとうございます。onBackButtonリスナーをアクティビティに設定する方法

私がオブジェクトのインスタンスを再作成するアクティビティは、アクティビティクラスから派生しません。それはちょうど活動です。だから私は反対しかない。クラスのインスタンスでそのようなことを行う方法はありますか?クラスではありませんか?

答えて

22

前に、その条件付きで

setResult(result); //if you want to pass a result to activity A 
finish(); 

どこかを含める必要があります方法:ActivityクラスのonBackPressed()

1

onDestroyを上書きしてコードを入力することができます。

別の可能性(あなたのニーズに合っている可能性があります)は、onBackPressedを上書きすることです。あなたは、単にonKeyDown(またはonKeyUp)をオーバーライドし、「戻る」ボタンに作用するアクティビティで

+2

メモリ不足のためなど、アクティビティが破棄されている場合、これはシステムから呼び出されませんか?私はこれがOPの後にあるのか分からない。 –

+0

あなたはポイントがありますが、私は一般に、アクティビティのライフサイクルに従い、キーに束縛されない方が良いと思います。 – MByD

+0

それは要件が何であるかによって異なります。私のアプリケーションの1つでは、ユーザの行動に基づいてビューが変化するアクティビティがあります。 「戻る」キーが押されると、私は元の状態(私が変更された状態にある場合)を復元するか、アクティビティを終了します。この場合、ライフサイクルは私を助けません。 –

4

、方法:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //do whatever you need for the hardware 'back' button 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

あなたは「戻る」キーをしたい場合は、まだ終了していることに注意してくださいあなたの活動は、その後、あなたはあなたがオーバーライドする必要がありreturn true;

関連する問題