我想知道是否有可能在可见的活动更改中进行复制,这些更改是在不可见的活动中发生的。Android如何将信息从一个活动复制到其他活动
例如,我有一个循环,其中一个整数在Activity A中递增,然后我调用Activity B作为一个额外的整数。
有没有一种方法可以反映B中的增量(这是A中产生的)?
在此先感谢。
我想知道是否有可能在可见的活动更改中进行复制,这些更改是在不可见的活动中发生的。Android如何将信息从一个活动复制到其他活动
例如,我有一个循环,其中一个整数在Activity A中递增,然后我调用Activity B作为一个额外的整数。
有没有一种方法可以反映B中的增量(这是A中产生的)?
在此先感谢。
由于INT是基本类型,与INT类型的变量时将它传递到活动乙将不被改变。
我建议你在INT类型的包装器传递(即class IntWrapper { int value; }
)
当您增加value
的变化将反映。
您也可以使用广播recievers传递数据:
在听音活动/片段创建reciever并注册它(这样做是在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"));
不要忘记注销任何recievers中的onPause或的OnDestroy(无论更有意义根据您注册reciever):
{unregisterReceiver(my_broadcast_reciever);
现在,您要用于发送数据,断火,像这样的意图活动/片段(您可能希望创建并保持意图在一个更高的级别,所以你不必每次更新都创建一个新对象):
Intent sintent = new Intent("theKeywordThisBCRRespondsTo");
//maybe also do: sintent.addInt(int); or something
sendBroadcast(sintent);
请记住,在某些情况下,这可能有点矫枉过正,但它是在活动/片段之间沟通和传输数据的好方法。
我会反对这种做法。 BroadcastReceiver适用于内部应用程序通信。在相同的应用程序中使用它太过矫枉过正。 – Krypton