我想知道是否可以在我的可见活动中复制在不可见活动中发生的更改。
例如,我在活动 A 中有一个整数递增的循环,然后我调用活动 B,将整数作为额外的整数传递。
有没有办法看到 B 中反映的增量(在 A 中发生)?
提前致谢。
我想知道是否可以在我的可见活动中复制在不可见活动中发生的更改。
例如,我在活动 A 中有一个整数递增的循环,然后我调用活动 B,将整数作为额外的整数传递。
有没有办法看到 B 中反映的增量(在 A 中发生)?
提前致谢。
由于int是原始类型,因此将int类型的变量传递给活动 B时不会更改它。
我建议你传入一个int类型的包装器(即class IntWrapper { int value; }
)
当你增加时,变化就会体现出来value
。
您还可以使用广播接收器传递数据:
在监听活动/片段中创建接收者并注册它(在 oncreate 或 onresume 或其他东西中执行此操作,甚至可能在 onrestart 中执行此操作)。该活动现在将收听广播,您可以使用内置关键字测试它是否是针对该接收者的广播。因为广播是使用意图完成的,所以您还可以获取和使用存储在该意图中的其他数据(例如您的 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"));
不要忘记在 onpause 或 ondestroy 中取消注册任何接收器(根据您在哪里注册接收器最有意义):
{unregisterReceiver(my_broadcast_reciever);
现在,在您要用于发送数据的活动/片段中,像这样触发意图(您可能希望创建意图并将其保持在更高级别,这样您就不会在每次更新时都继续创建新对象):
Intent sintent = new Intent("theKeywordThisBCRRespondsTo");
//maybe also do: sintent.addInt(int); or something
sendBroadcast(sintent);
请记住,在某些情况下这可能有点矫枉过正,但它是在活动/片段之间通信和传输数据的好方法。