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

时间:2011-03-02 11:50:53

标签: java android android-activity android-intent

很难解决我的问题,但现在就去了。

我有一个活动活动1 从中我可以打开三个活动中的一个活动2 活动3 活动4 ,我希望结果来自 Activity 3 。在每个活动中,我可以创建一个新的意图来打开任何其他活动,然后在当前活动上调用finish()

当我从 Activity 1 打开 Activity 3 然后按下按钮完成 Activity 3 时,我有代码正常工作消息完美。我的问题在于从活动1 打开活动2 然后从活动2 打开活动3 (依次打电话) 活动2 上的finish(),然后按活动3 中的按钮,并将相同的消息发送到活动1 。目前发送的结果代码为0,当我试图让它发送结果代码'726'时。

总之,我希望能够从其他活动的未知级别的意图创建的活动中发送消息,但是如果有意义的话,该消息总是返回到相同的最低级别活动。

如果这很难理解我很抱歉,我希望有人可以帮助我

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

试试Observer

同样Singleton将完成这项工作。

或许多级别(活动)上的startActivityForResult