android - 将数据从 Activity 发送到另一个 Activity 而不启动它

标签 android android-intent android-activity bundle

如果我有两个 Activity Activity1 和 Activity2,并且我想在不启动 Activity2 的情况下将数据从 Activity1 发送到 Activity2

我知道如果我想启动 Activity2 我在 Activity1.java 中使用这段代码

Intent intent ;
Bundle bundle = new Bundle();

bundle.putString(BG_SELECT, hexColor);

intent = new Intent(getApplicationContext(), Activity2.class);

intent.putExtras(bundle);

// this is to start but I want just refresh Activity2 not start it
startActivityForResult(intent, uniqueNo);

在 Activity2.java 中

bundle = getIntent().getExtras();

if (bundle != null) {
   bgColor = bundle.getString(SebhaActivity.BG_SELECT);
   System.out.println("in Activity2, selected BG: "+bgColor);

}

如何在不启动的情况下刷新Activity2来查找其中的数据? 提前致谢。

最佳答案

您可以使用 LocalBroadcastManager .对于您的场景,即 Activity1 向 Activity2 发送内容,您可以执行如下操作。

# Activity1

Intent intent = new Intent("INTENT_NAME").putExtra(BG_SELECT, hexColor);
LocalBroadcastManager.getInstance(Activity1.this).sendBroadcast(intent);

在 Activity2 上,您需要首先注册接收器,例如,在其 onCreate 方法上,然后使用 BroadcastReceiver 获取 Intent ,如下所示

# Activity2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter("INTENT_NAME"));
}

然后,注册mReceiver获取BG_SELECT字段

# Activity2

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String receivedHexColor = intent.getStringExtra(BG_SELECT);
    }
};

关于android - 将数据从 Activity 发送到另一个 Activity 而不启动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14833840/

相关文章:

java - 电池电压是否与其电量/百分比直接对应?

android - 在 android 中点击一个 get/post 请求一个 URL 但在服务器端没有收到请求

Activity 生命周期中的android内存管理

android - Eclipse 加载单独的 Activity 而不是应用程序

java - 如果条件在Java中不起作用

android - 调用 ACTION_GET_CONTENT Intent 后文件不可选择

java - 在Nox(Android模拟器)中运行java .class/.jar文件

安卓:意向服务。在哪里保存文件?

android - 如何列出可用的 Android 虚拟设备 (AVD)

android - 使用 onBackPressed() 进行 fragment 转换