将来自多个活动的消息传递给主要活动

问题描述:

要解决我的问题非常困难,将来自多个活动的消息传递给主要活动

我有一个活动活动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

我讨厌回答我的问题,但我想通了,无论如何,任何人寻找答案:

从主要活动

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

尝试Observer

另外Singleton会做这项工作。

或者startActivityForResult在许多层面上(活动)。