Android 将数据从活动发送到另一个活动而不启动它
如果我有两个活动Activity1和Activity2,并且我希望在不启动Activity2的情况下将数据从Activity1发送到Activity2 我知道如果我想启动Activity2,我会在Activity1.java中使用这段代码Android 将数据从活动发送到另一个活动而不启动它,android,android-intent,android-activity,bundle,Android,Android Intent,Android Activity,Bundle,如果我有两个活动Activity1和Activity2,并且我希望在不启动Activity2的情况下将数据从Activity1发送到Activity2 我知道如果我想启动Activity2,我会在Activity1.java中使用这段代码 Intent intent ; Bundle bundle = new Bundle(); bundle.putString(BG_SELECT, hexColor); intent = new Intent(getApplicationContext()
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的情况下刷新Activity2以查找其中的数据?
提前感谢。如果下一个活动(您需要数据的地方,即Activity2)无法从这里开始,您可以将数据保存在活动1的SharedReferences中,并在到达那里时在Activity2中访问它
创建一个非活动类
public class Datas {
public static String name;
}
Data mData = new Data();
String str = mData.name
在活动类中声明此非活动类
public class Datas {
public static String name;
}
Data mData = new Data();
String str = mData.name
如果要在两个活动同时运行时在两个活动之间共享数据,则应使用一些可供两个活动使用的存储 检查
共享首选项
,或创建一个可在这两个活动中访问的全局存储类。没有真正的“方法”可以做到这一点。您可以使用。对于您的场景,即Activity1向Activity2发送某些内容,您可以执行以下操作
# Activity1
Intent intent = new Intent("INTENT_NAME").putExtra(BG_SELECT, hexColor);
LocalBroadcastManager.getInstance(Activity1.this).sendBroadcast(intent);
在Activity2上,您需要首先在其onCreate方法上注册receiver,然后使用BroadcastReceiver获得意图,如下所示
# Activity2
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter("INTENT_NAME"));
}
然后,注册mReceiver
以检索BG\u SELECT
字段
# Activity2
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String receivedHexColor = intent.getStringExtra(BG_SELECT);
}
};
我认为,在这里,共享的参考是无与伦比的 SharedReferences是特定于应用程序的,即数据在 执行以下选项之一:PREFS_NAME是 文件模式是操作模式。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);
使用SharedReference是非常安全的
同时访问
希望这一条会有帮助。我认为这个问题的反对票是不必要的。即使这些活动被O.P.误解,许多Android初学者仍然会问这个问题,一个好的答案会引导他们前进。但这还不够安全