带片段的活动和另一个活动在onActvityResult上返回null

TAB*_*ABZ 2 android android-fragmentactivity

ActivityOne- >包含FragmentOne,我添加了onActivityResult方法

FragmentOne- >包含recyclerView并在项目上单击startActivityForResult转到ActivityTwo

ActivityTwo- >有关FragmentOne中recyclerView中项目详细信息

ActivityOne在ActivityResult上获取空数据

代码:ActivityOne

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Utils.showToast("intent receive");
    if (requestCode==1111 && resultCode == RESULT_OK){
        int position =(int) data.getExtras().get("position");
        Log.d("TAG", "onActivityResult: "+ position);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码:FragmentOne

   Intent i = new Intent(mContext.getApplicationContext(), ActivityTwo.class);
            Bundle bundle = new Bundle();
            bundle.putInt("id", id);
            bundle.putInt("position",position);
            i.putExtras(bundle);  
            ((Activity) mContext).startActivityForResult(i,1111);
Run Code Online (Sandbox Code Playgroud)

代码:ActivityTwo

@Override
public void onBackPressed() {
    super.onBackPressed();
    if (hasChanges){
        Intent intent = new Intent();
        intent.putExtra("position",position);
        setResult(Activity.RESULT_OK,intent);
    }
    finish();
}
Run Code Online (Sandbox Code Playgroud)

ADM*_*ADM 5

更改为。onBackPressed()您刚刚完成活动,没有将结果发送回去。在这种情况下,super.onBackPressed()还有一件事情与Finish会做同样的事情。因此,只需调用一个即可。

 @Override
public void onBackPressed() {
    if (hasChanges){
        Intent intent = new Intent();
        intent.putExtra("position",position);
        setResult(Activity.RESULT_OK,intent);
    }
    super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)