我在项目中使用的是一个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
先前在网上查询了很久也没找到原因,由此看来也需要偶尔在某些特殊的地方敲敲代码呢。觉得有用的博友可以点赞哦。