如果我有两个活动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以查找其中的数据? 在此先感谢。
答案 0 :(得分:7)
您可以使用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);
}
};
答案 1 :(得分:2)
试试这个,
创建一个非活动类。
public class Datas {
public static String name;
}
在您的活动类中声明此非活动类。
Data mData = new Data();
String str = mData.name
答案 2 :(得分:1)
如果下一个活动(你需要数据的地方,活动2,即)不会从这里开始,你可以将数据保存在活动1的SharedPreferences中,并在活动2中访问它
答案 3 :(得分:1)
如果要在两个活动同时运行时共享两个活动之间的数据,则应使用一些可用的存储。
检查Shared Preferences
,或创建可在两个活动中访问的全局存储类。没有真正的“方法”可以做到。
答案 4 :(得分:1)
我认为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
希望这个会有所帮助。