场景:我有一个MainActivity.java
、OtherPageForFragments.java
和一个位于OtherPageForFragments.java
上的片段
在MainActivity.java
中,我编写了以下代码来启动一个活动并在
onActivityResult(请求代码整数,结果代码整数,意图数据整数)
是
startActivityForResult(new Intent(this, OtherPageForFragments.class),REQUEST_CODE_MAP);
在fragment类的onDestroy()
中,我编写了以下代码:
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
mlocManager.removeUpdates(this);
Intent intent = new Intent();
intent.putExtra("Latitude", passLatLng.latitude);
intent.putExtra("Longitude", passLatLng.longitude);
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}
现在,我想在MainActivity
类中得到结果。因此,我在onActivityResult
方法中编写了以下代码:
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_MAP)
{
tost("2");
double lat=data.getExtras().getDouble("Latitude");
double lng=data.getExtras().getDouble("Longitude");
tost(lat + " -- " + lng);
}
问题:返回的resultCode
不是Activity.RESULT_OK
,而我得到的Intent
是null
。
怎么办?谢谢
6条答案
按热度按时间ujv3wf0j1#
此代码不应位于onDestroy中。onDestroy发生在活动已完成且调用了onActivityResult之后。
此代码需要位于关闭活动/片段的代码中,如按下返回键或单击关闭按钮
ttcibm8c2#
试试这个:
5gfr0r5j3#
也许你需要澄清两个活动的启动模式。通常它们应该是“标准的”,如果在你的活动清单文件中有“singleTop”...属性的话。你需要多加注意。
tvokkenx4#
对于我来说,删除lauch意图的标记
Intent.FLAG_ACTIVITY_NEW_TASK
解决了问题az31mfrm5#
在setResult()之前调用方法finish()
尝试如下覆盖onBackPressed()方法
jhdbpxl96#
以上都试过了。
什么都不管用
这是个愚蠢错误。
我正在调用finish()在回收器适配器(在项目单击).
并且在setResult(CODE,intent)之前被调用;
如果以上所有都失败,
注解“finish();“并检查是否“finish();“正在其他地方调用;