将数据从活动发送到另一个而不启动它

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据从活动发送到另一个而不启动它相关的知识,希望对你有一定的参考价值。

如果我有两个活动Activity1和Activity2,我想在没有Start 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以在其中找到数据而不启动它?提前致谢。

答案

如果下一个活动(你需要数据的地方,活动2,即)不会从这里开始,你可以将数据保存在活动1的SharedPreferences中,并在活动2中访问它

另一答案

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

# Activity1

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

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

# 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);
    }
};
另一答案

试试这个,

创建一个非活动类。

  public class Datas {
  public static String name;
  }

在您的活动类中声明此非活动类。

Data  mData = new Data();
String str = mData.name
另一答案

如果要在两个活动同时运行时共享两个活动之间的数据,则应使用一些可用的存储。

检查Shared Preferences,或创建可在两个活动中访问的全局存储类。没有真正的“方法”来做到这一点。

另一答案

我认为SharedPreferences在这里变得无与伦比。

SharedPreferences是特定于应用程序的,即在执行以下选项之一时丢失数据:PREFS_NAME是文件的名称。 mode是操作模式。 editor.commit()用于保存对共享首选项的更改

你的代码是这样的

在第一个活动中您从哪里共享数据

  SharedPreferences preferences=getSharedPreferences("PhoneBook",MODE_PRIVATE);
    SharedPreferences.Editor editor=preferences.edit();

    editor.putInt("registration_id",c.getInt(c.getColumnIndex("db_regiser_id")));
    editor.putBoolean("IsLogin",true);
    editor.commit();

在第二个活动中获取这样的数据

SharedPreferences preferences=getSharedPreferences("PhoneBook",MODE_PRIVATE);
 int registration_id = preferences.getInt("registration_id", 0);

使用SharedPreferences非常安全。

还访问

https://developer.android.com/training/data-storage/shared-preferences.html

希望这个会有所帮助。

以上是关于将数据从活动发送到另一个而不启动它的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从一个片段传输到另一个片段android

如何从片段获取数据到另一个活动? (不是容器活动)[重复]

ActivityNotFoundException,启动活动时出错

如何将列表视图中的数据从一个片段发送到另一个片段

如何将数据从一个 Fragment 发送到另一个 Fragment?

onDetach()不要求从一个片段移动到另一个片段