Android Studio如何在不同Activity中传送数据,一般我就用两种,一种是直接传送
Intent intent = new Intent(ChooseMode.this, ConfigData.class);
intent.putExtra(SHARE_NAME,FileName);
startActivity(intent);
对端取:
if (getIntent()!=null)
{
SharedPreferencesName = getIntent().getStringExtra(ChooseMode.SHARE_NAME);
}
另外一种就是借助Bundle,一个Bundle可以传很多数据,具体看代码;
Intent intent = new Intent(ConfigData.this, MainActivity.class);
Bundle DataPackege = new Bundle();
DataPackege.putString("DataPath",DataPath);
DataPackege.putBoolean("Mode",Mode);
DataPackege.putFloat("HYCS",HYCS);
DataPackege.putInt("NumKs",NumKs);
DataPackege.putFloat("MinUnits",MinUnits);
startActivity(intent);
对端取:
if (getIntent()!=null)
{
Bundle dataPackege = getIntent().getBundleExtra(ConfigData.CONFIG_DATA);
if (dataPackege!=null)
{
String datapath = dataPackege.getString("DataPath","");
boolean mode = dataPackege.getBoolean("Mode",true);
float hycs = dataPackege.getFloat("HYCS",10.0f);
int numks = dataPackege.getInt("NumKs",100);
float minunits = dataPackege.getFloat("MinUnits",1.0f);
}
}
如果A Activity需要打开一个Activity B,然后再关闭这个B Activity,B Activity再把数据传给A; 需要这样做: A端:
Intent intent = new Intent(ConfigData.this, FileBrowserActivity.class);
intent.putExtra("area", false);
startActivityForResult(intent, FILE_RESULT_CODE);
并回调:
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (FILE_RESULT_CODE == requestCode) {
Bundle bundle = data.getExtras();
String path = bundle.getString("file");
}
}
}
B端:
Intent data = new Intent(FileBrowserActivity.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("file", file.getPath());
data.putExtras(bundle);
setResult(2, data);
finish();
|