我为不同的国家/地区开展了五项活动。例如,印度,斯里兰卡,阿根廷,美国,中国,每项活动都包含选址活动来挑选当前的地方。
当我按下印度活动上的按钮时,会启动地点选择器活动。并选择位置并在印度活动上显示此位置。这样当我按下阿根廷活动上的按钮时,将启动地点选择器活动。并选择位置并在阿根廷活动中显示此位置。
为此,我想将一些数据发送回上一个屏幕。我使用了共享偏好设置,但是当我从任何活动中选择位置时,它总是在印度活动中显示数据,而不是我之前启动了地点选择器活动的活动。
简而言之,我需要从这个Place picker Activity获得一个结果,然后回到上一个。
下面是我从地点选择器发送数据的代码
__init__
,这是显示数据的每个活动中的代码
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);
我已经了解了StartActivityForResult()方法,但我还不确定如何正确使用它,任何示例?请帮助我,我是Android工作室的新手。
答案 0 :(得分:3)
当我按下印度活动上的按钮时,地方选择器活动 启动并选择位置并在印度显示此位置 活性。
正如您所说,地方选择器活动是获取数据,在获取数据后,您需要返回“相关国家/地区”活动并希望显示该详细信息。
我的建议是使用 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();
答案 1 :(得分:0)
在您当前的活动中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 101 && resultCode == RESULT_OK) {
// Receive and handle your data
}
}
处理已发送的结果
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
例如:在secondActivity中,如果要发回数据:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
如果您不想返回数据:
parentNode