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 } }}//onActivityResult
TA贡献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; }}
这看起来很傻,但效果很好。
添加回答
举报