2011-11-09 6 views
0

アクティビティ(A、B、C)が3つあり、アクティビティAがBを開始し、BがCを開始したとします。Android - 結果をどのようなアクティビティに配信するのですか?

アクティビティCの開始時にアクティビティBが終了するため、 。

このコードはない作品を実行します。

public class ActivityA extends Activity { 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) { 

     if (requestCode == ActivityC.REQUEST_CODE) { 
      // need this code be called when activityC finish 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

public class ActivityB extends Activity { 

    void startActivityC() { 
     Intent intent = new Intent(); 
     intent.setClass(this, ActivityC.class); 
     startActivityForResult(intent, ActivityC.REQUEST_CODE); 
     finish(); 
    } 
} 

public class ActivityC extends Activity { 
    public static final int REQUEST_CODE = 12345; 

    void finishActivity() { 
     Intent intent = new Intent(); 
     intent.putExtra("example", "example"); 
     setResult(RESULT_OK, intent); 
     finish(); 
    } 
} 

これを実装する方法任意のアイデア?

ありがとうございました!

答えて

1

問題は、ポイントCからポイントAにノートを送信しようとしているにもかかわらず、ポイントBを通過する必要がありますが、ポイントBはノートをもう通したくないと判断し、それ自身のこと。だからメモは消えます。活動Bでは

、あなたはすでに代わりの活動結果を処理し、その後終了し、あなたは結果のために活動を開始し、そうではなく、活動Cを開始した後、仕上げを呼び出していることを教え:

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent data) { 

    if (requestCode == ActivityC.REQUEST_CODE) { 
     setResult(RESULT_OK, data); 
     finish(); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

この意志アクティビティBがアクティビティCから要求した結果を受け取った後、それをアクティビティAに戻します。

希望するものがあります。

+0

ActivityCに直接結果をActivityAに配信する手段はありますか? – Rodrigo

+0

直接ではありません。静的インスタンスによって制御されるメッセージハンドラなどの間接的なメソッドがありますが、ここでの問題はスコープです。アクティビティAは、アクティビティCが存在するということを全く知らず、その逆もありません。 CだけがBによってもたらされるので、CからAへの通信のための最良の方法は、Bを経由することです.BがCを起動してから終了する場合、Bも必要ですか? CはBが行うことは何でも行うことができ、Aから直接起動できますか? – Geekswordsman