Android用のアプリを作成していますが、サポートが必要です。A、B、Cの3つのアクティビティがあります。私がAにいて、 Bを開始するとき、オプションを元に戻したいので、Aを終了したくありません。しかし、私がBからCを開始した場合、 AとBの両方を終了したいと思います。startActivityForResultを使用した例をいくつか見てきましたが、コツをつかむことはできませんでした。誰でも簡単に説明できるサンプルがあるので、コードで使用できますか?
前もって感謝します!
Android用のアプリを作成していますが、サポートが必要です。A、B、Cの3つのアクティビティがあります。私がAにいて、 Bを開始するとき、オプションを元に戻したいので、Aを終了したくありません。しかし、私がBからCを開始した場合、 AとBの両方を終了したいと思います。startActivityForResultを使用した例をいくつか見てきましたが、コツをつかむことはできませんでした。誰でも簡単に説明できるサンプルがあるので、コードで使用できますか?
前もって感謝します!
Intent intent = new Intent( this, C.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );
そのフラグを使用するとアクティビティ スタックがクリアされるため、C の [戻る] ボタンを押すとホーム画面に移動します
最初の部分では、フォーム B を C に移動すると、A からこの StartActivityforResult の A と B を終了し、B から C に移動するときに B を終了すると、A の onActivityResult が自動的にトリガーされ、そこでアクティビティ C を開始できます。
これが StartActivityforResult の例です
http://saiful103a.wordpress.com/2011/03/19/android-startactivity-and-startactivityforresult/
私は3つのインテントA、B、Cを持っています。
明確にするために、あなたは s を意味していると思いますActivity
( に「入る」ことはできませんIntent
)。
私がAにいてBを開始するとき、私はfinish() Aをしたくありません。なぜなら、オプションを戻す必要があるからです。しかし、私が B から CI を開始した場合、A と B の両方を終了したいと考えています。
あなたがしたいことは、から呼び出すことstartActivityForResult(new Intent(this, C.class), requestCode)
ですActivity B
。次に でActivity B
、オーバーライドonActivityResult()
してfinish()
B (したがって、バックスタックからポップB
する) か、何もしない (したがって、 にとどまる) かのいずれかを行いますB
。
必要な作業は次のとおりです。
public static final
クラスで要求コードを定義します (これは良い習慣と見なされます)。このコードを使用して、作成する可能性のあるさまざまな呼び出しを区別startActivityForResult()
します。
public static final int C_START_CODE = 0;
からActivity B
、電話して、
startActivityForRequest(C.class, C_START_CODE);
次に、次のようにB
オーバーライドして結果をキャッチします。onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case C_START_CODE:
if (resultCode == RESULT_OK) {
// Add code here as necessary before finishing B
// and backing out of the Activity to A.
finish();
}
default:
break;
}
}
最後に、終了Activity C
することにした場合は、次の 2 つのケースを区別してください。
Activity B
AND を終了したい場合はActivity C
、呼び出します
setResult(RESULT_OK);
finish();
終了するだけの場合はActivity C
、電話してください
setResult(RESULT_CANCELED);
finish();