5 回答
TA贡献1860条经验 获得超9个赞
从您的FirstActivity调用SecondActivity使用 startActivityForResult()方法
例如:
Intent i = new Intent(this, SecondActivity.class);startActivityForResult(i, 1);
在您的SecondActivity设置中,您要返回的数据FirstActivity。如果您不想返回,请不要设置任何。
例如:SecondActivity如果要发回数据,请执行以下操作:
Intent returnIntent = new Intent();returnIntent.putExtra("result",result);setResult(Activity.RESULT_OK,returnIntent);finish();如果您不想返回数据:
Intent returnIntent = new Intent();setResult(Activity.RESULT_CANCELED, returnIntent);finish();
现在在您的FirstActivity课程中编写以下代码的onActivityResult()方法。
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}}//onActivityResultTA贡献1802条经验 获得超4个赞
补充@ Nishant的答案,返回活动结果的最佳方法是:
Intent returnIntent = getIntent();returnIntent.putExtra("result",result);setResult(RESULT_OK,returnIntent);finish();我有问题
new Intent();
然后我发现正确的方法是使用
getIntent();
获得当前的意图
TA贡献1995条经验 获得超2个赞
对于那些在onActivityResult中遇到错误requestCode问题的人
如果您是startActivityForResult()从您的呼叫Fragment,则拥有片段的活动会更改requestCode。
如果您想在活动中获得正确的resultCode,请尝试以下操作:
更改:
startActivityForResult(intent, 1); 至:
getActivity().startActivityForResult(intent, 1);
TA贡献1820条经验 获得超9个赞
如果要使用活动结果更新用户界面,则无法使用“ this.runOnUiThread(new Runnable() {} 执行此操作”UI不会刷新新值。相反,你可以这样做:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_CANCELED) {
return;
}
global_lat = data.getDoubleExtra("LATITUDE", 0);
global_lng = data.getDoubleExtra("LONGITUDE", 0);
new_latlng = true;}@Overrideprotected void onResume() {
super.onResume();
if(new_latlng)
{
PhysicalTagProperties.this.setLocation(global_lat, global_lng);
new_latlng=false;
}}这看起来很傻,但效果很好。
添加回答
举报
