您的位置:首页 > 移动开发 > Android开发

在Fragment使用startActivityForResult()方法返回的resultCode不正确

2016-08-07 23:14 423 查看
  我在项目中使用的是一个Activity中带有4个Fragment,就相当于TabLayout和viewPager的级联使用那种形式,作为底部的Tab导航,然后在其中的一个Fragment中还带了一个Frament。我就是在这个Fragment中调用的startActivityForResult()方法,发现调用后,返回的resultCode,并不是我设置返回的resultCode。后来发现原来是把

  Intent intent = new Intent();
  setResult(RESULT_OK, intent);

这两行代码放到了onDestroy()里面,如下:

@Override

protected voidonDestroy() {

Intent intent =newIntent();

setResult(RESULT_OK, intent);

super.onDestroy();

}

  导致返回的resultCode错误,而且如果返回一些捆绑的数据,也是为null的。我把这两行代码放到按钮的监听方法onClick()里边,返回的resultCode就正确了。发现上面的原因还是因为是在火车上,我使用一个类来存储数据,调用其静态方法,存储到静态变量里边,结果发现存储不成功,而且在下次才显示出存储成功。原来在onDestroy()方法中调用了此静态方法,由此联想到Fragment中调用startActivityForResult()方法返回的resultCode不正确的原因可能是这个。发现果然如此。

  我使用的是android.support.v4.app.Fragment;包下的Fragment

  先前在网上查询了很久也没找到原因,由此看来也需要偶尔在某些特殊的地方敲敲代码呢

。觉得有用的博友可以点赞哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息