2012-09-18 81 views
1

我想知道是否有可能在可见的活动更改中进行复制,这些更改是在不可见的活动中发生的。Android如何将信息从一个活动复制到其他活动

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

有没有一种方法可以反映B中的增量(这是A中产生的)?

在此先感谢。

回答

0

由于INT是基本类型,与INT类型的变量时将它传递到活动乙将不被改变。

我建议你在INT类型的包装器传递(即class IntWrapper { int value; }

当您增加value的变化将反映。

0

您也可以使用广播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); 

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

+0

我会反对这种做法。 BroadcastReceiver适用于内部应用程序通信。在相同的应用程序中使用它太过矫枉过正。 – Krypton

相关问题