1

Android用のアプリを作成していますが、サポートが必要です。ABCの3つのアクティビティがあります。私がAにいて、 Bを開始するとき、オプションを元に戻したいので、Aを終了したくありません。しかし、私がBからCを開始した場合、 ABの両方を終了したいと思います。startActivityForResultを使用した例をいくつか見てきましたが、コツをつかむことはできませんでした。誰でも簡単に説明できるサンプルがあるので、コードで使用できますか?

前もって感謝します!

4

3 に答える 3

0
Intent intent = new Intent( this, C.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );

そのフラグを使用するとアクティビティ スタックがクリアされるため、C の [戻る] ボタンを押すとホーム画面に移動します

于 2012-05-16T16:10:02.340 に答える
0

最初の部分では、フォーム B を C に移動すると、A からこの StartActivityforResult の A と B を終了し、B から C に移動するときに B を終了すると、A の onActivityResult が自動的にトリガーされ、そこでアクティビティ C を開始できます。

これが StartActivityforResult の例です

http://saiful103a.wordpress.com/2011/03/19/android-startactivity-and-startactivityforresult/

于 2012-05-16T16:11:13.133 に答える
0

私は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

必要な作業は次のとおりです。

  1. public static finalクラスで要求コードを定義します (これは良い習慣と見なされます)。このコードを使用して、作成する可能性のあるさまざまな呼び出しを区別startActivityForResult()します。

    public static final int C_START_CODE = 0;
    
  2. から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;
        }
    }
    
  3. 最後に、終了Activity Cすることにした場合は、次の 2 つのケースを区別してください。

    • Activity B AND を終了したい場合はActivity C、呼び出します

      setResult(RESULT_OK);
      finish();
      
    • 終了するだけの場合はActivity C、電話してください

      setResult(RESULT_CANCELED);
      finish();
      
于 2012-05-16T16:18:18.853 に答える