Android如何同时将信息从一个活动复制到另一个活动

时间:2012-09-18 01:53:09

标签: android android-intent android-activity

我想知道是否可以在可见的活动中进行复制,这些更改会在不可见的活动中发生。

例如,我在Activity A中有一个整数递增的循环,然后我调用Activity B作为额外的整数传递。

有没有办法在B?

中看到反映增量(在A中是否出现)?

提前致谢。

2 个答案:

答案 0 :(得分:0)

由于 int 是基本类型,因此将活动B 传递给活动B 时,不会更改 int 类型的变量。

我建议您传入 int 类型的包装(即class IntWrapper { int value; }

当您增加value时,会反映此更改。

答案 1 :(得分:0)

您还可以使用广播接收方传递数据:

在侦听活动/片段中创建接收器并注册它(在oncreate或onresume或其他内容中执行此操作,甚至可能在onrestart上执行此操作)。该活动现在将监听广播,并测试它是否是使用内置关键字为该接收者播放的广播。因为广播是使用intent完成的,所以你也可以获取并使用存储在该intent中的其他数据(比如你的int):

    my_broadcast_reciever = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {String action = intent.getAction();
            if (action.equals("finish_buy_activity"))
            //do whatever
            }               
        }
    };
    registerReceiver(my_broadcast_reciever, new IntentFilter("theKeywordThisBCRRespondsTo"));

不要忘记在暂停或ondestroy中取消注册任何接收者(根据注册接收者的位置,任何最合理的接收者):

    {unregisterReceiver(my_broadcast_reciever);

现在,在您要用来发送数据的活动/片段中,像这样触发意图(您可能希望创建并保持更高级别的意图,这样您就不会继续创建新的对象每次更新):

    Intent sintent = new Intent("theKeywordThisBCRRespondsTo");
    //maybe also do: sintent.addInt(int); or something
    sendBroadcast(sintent);

请记住,在某些情况下这可能有点过分,但它是在活动/片段之间进行通信和传输数据的好方法。