2011-03-02 49 views
3

要解決我的問題非常困難,將來自多個活動的消息傳遞給主要活動

我有一個活動活動1從這個我可以打開的三種活動活動2活動3活動4,其中我想的結果來自活動一個3 。在這些活動中,我可以創建一個新的意向來打開任何其他活動,然後在當前活動上調用finish()

我的代碼爲工作時我打開活動3活動1,然後按下按鈕以完成活動3它完美地發送消息。我的問題在於發言權開口活動2活動1然後從活動2開口活動3(依次上活動2主叫finish()),然後在活動3按下按鈕併發送同樣的信息到活動1。目前發送的結果代碼是0,當我試圖讓它發送結果代碼'726'時。

總之我希望能夠從意圖從其他活動的未知水平創造了一個活動發送消息,但該消息一直追溯到同一個最低水平的活動如果是有道理的。

我很抱歉,如果這是很難理解,我希望有人能幫助我

+0

這是您描述的活動[計劃](http://i.imgur.com/YIh9f.png)嗎? – 2011-03-02 12:38:27

回答

2

我討厭回答我的問題,但我想通了,無論如何,任何人尋找答案:

從主要活動

public void onClick2Activity(View v){ 
      Intent i = new Intent(); 
      i.setClass(1Activity.this, 2Activity.class); 
      startActivityForResult(i, 0); 
     } 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode==726){ 
      Bundle bundle = data.getExtras(); 
      int string = bundle.getInt("test"); 
      Log.v("Extra", "" + string); 
      Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show(); 
     } 
     else{ 
      Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show(); 
     } 
    } 

從2Activity:

public void onClick3Activity(View v){ 
      Intent i = new Intent(); 
      i.setClass(2Activity.this, 3Activity.class); 
      startActivityForResult(i, 1); 
     } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode==726){ 
      Intent in = new Intent(); 
      in.putExtra("test", "test"); 
      setResult(726,in); 
      finish(); 
     } 
     else{ 
      Log.v("Failed", "Failed"); 
     } 
    } 

來自3Activity:

public void onItemClick(){ 
    Intent in = new Intent(); 
    weaponID = position + 1; 
    in.putExtra("test", "test"); 
    setResult(726,in); 
    finish(); 
} 
+0

回答你自己的問題絕對沒有錯!如果你自己解決,你甚至會受到鼓勵。 – 2011-03-02 12:37:56