我在不同的国家/地区有五项活动,例如印度,斯里兰卡,阿根廷,美国,中国,每个活动都包含用于选择当前地点的地点选择器活动。
当我在印度活动上按一个按钮时,将启动地点选择器活动。然后选择位置并在印度活动上显示此位置。例如,当我在阿根廷活动上按一个按钮时,将启动位置选择器活动。位置,并在阿根廷活动上显示此位置。
为此,我想将一些数据发送回上一屏幕。我使用了共享的首选项,但是当我从任何活动中选择位置时,它总是在印度活动中显示数据,而不是之前从中启动位置选择器活动的活动。
简而言之,我需要从该地点选择器活动中获取一个结果,然后返回上一个活动。
以下是我从位置选择器发送数据的代码
CharSequence city = place.getName();
CharSequence cityAddress = place.getAddress();
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("city_address", (String) cityAddress);
editor.putString("city_name", (String) city);
editor.commit();
Intent intent = new Intent(this, India.class);
startActivity(intent);
这是每个活动中用于显示数据的代码
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
String n = settings.getString("city_name", "");
String a = settings.getString("city_address", "");
cityname.setText(n);
cetlocation.setText(a);
我已经阅读了有关StartActivityForResult()方法的信息,但是我不确定如何正确使用它,是否有任何示例?请帮助我,我是android studio的新手。
当我在India活动上按下按钮时,将启动地点选择器活动。然后选择位置并在India活动上显示此位置。
如您所说,场所选择器活动是获取数据,在获取数据之后,您需要返回到“相关国家”活动,并希望显示该详细信息。
我的建议是使用onResume()或startActivityforResult方法。
在您的位置选择器活动中
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("city_address", (String) cityAddress);
editor.putString("city_name", (String) city);
editor.commit();
finish();
在您的国家/地区活动中,
@Override
public void onResume() {
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
String n = settings.getString("city_name", "");
String a = settings.getString("city_address", "");
cityname.setText(n);
cetlocation.setText(a);
}
在您的国家/地区活动中,当您开始进行地点选择器活动时,请使用
Intent i = new Intent(this, Placepickeractivity.class);
startActivityForResult(i, 1);
并重写onActivityResult方法,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == 1){
String n = data.getStringExtra("city_name");
String a = data.getStringExtra("city_address");
cityname.setText(n);
cetlocation.setText(a);
}
}
}
在您的地点选择器活动中,将结果发送为
Intent returnIntent = new Intent();
returnIntent.putExtra("city_address", (String) cityAddress);
returnIntent.putExtra("city_name", (String) city);
setResult(1, returnIntent);
finish();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句