我想知道是否可以在可见的活动中进行复制,这些更改会在不可见的活动中发生。
例如,我在Activity A中有一个整数递增的循环,然后我调用Activity B作为额外的整数传递。
有没有办法在B?
中看到反映增量(在A中是否出现)?提前致谢。
答案 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);
请记住,在某些情况下这可能有点过分,但它是在活动/片段之间进行通信和传输数据的好方法。