在启动后将对象从一个Activity发送到另一个Activity

时间:2014-01-25 19:30:00

标签: android android-activity

我需要将一个对象从一个活动发送到另一个活动,但 startActivity(i)之后。

示例:

活动A 调用活动B

背景中的某些内容应更新活动A 中的对象,制作该对象的副本(而不是发送引用),并将其发送到活动B (这已经开始了)。

<activity
        android:name="gui.GUIConversacion"

        android:label="@string/app_name" >
        <intent-filter>
        <action android:name="action.action.myactionstring" />
    </intent-filter>
    </activity>

                Intent intent = new Intent("action.action.myactionstring");
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

            intent.putExtra("conversacionActualizada",conversacionesCache.get(c));
            startActivity(intent);

 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if ("action.action.myactionstring".equals(intent.getAction())) {
        this.conversacion=(Conversacion) intent.getExtras().get("conversacionActualizada");
        actualizarGUI();
    }
}

1 个答案:

答案 0 :(得分:0)

你需要做的是发送另一个额外附加的意图和一个标志来说明重用他的活动,然后它会在你可以获得该对象的接收活动上调用onNewIntent。

编辑: 在没有总结的情况下链接是不好的做法,所以这就是你需要的:

在接收活动中:

   public static final String EXTRA_KEY_CONSTANT = "my extra key";

   @Override
   protected void onNewIntent(Intent intent) {
       super.onNewIntent(intent);
       if ("action.action.myactionstring".equals(intent.getAction())) {
           //TODO: intent.getExtra(EXTRA_KEY_CONSTANT);
       }
   }

接收活动主要节目

   <activity android:name=".MyReceivingActivity" >
        <intent-filter>
            <action android:name="action.action.myactionstring" />
            <category android:name="android.intent.category.DEFAULT" />
            ...
        </intent-filter>
   </activity>

在其他活动中

    Intent intent = new Intent("action.action.myactionstring");
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra(ReceivingActiviy.EXTRA_KEY_CONSTANT, object);
    startActivity(intent);