繁体   English   中英

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

[英]Passing messages from multiple activities to main activity

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

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

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

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

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

我讨厌回答我自己的问题,但无论如何我都想到了其他寻找答案的人:

来自主要活动

 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();
}

试试观察者

Singleton也会做这项工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM