Activity 带有片段,另一个 Activity return 在 onActivityResult 中为 null
Activity with fragment and another Activity return null on onActvityResult
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);
}
}
代码: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);
代码:ActivityTwo
@Override
public void onBackPressed() {
super.onBackPressed();
if (hasChanges){
Intent intent = new Intent();
intent.putExtra("position",position);
setResult(Activity.RESULT_OK,intent);
}
finish();
}
更改 onBackPressed()
as.You 刚刚完成 activity 没有返回结果。
在这种情况下,还有一件事 super.onBackPressed()
会做与 finish.So 相同的事情,只需调用 one 。
@Override
public void onBackPressed() {
if (hasChanges){
Intent intent = new Intent();
intent.putExtra("position",position);
setResult(Activity.RESULT_OK,intent);
}
super.onBackPressed();
}
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);
}
}
代码: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);
代码:ActivityTwo
@Override
public void onBackPressed() {
super.onBackPressed();
if (hasChanges){
Intent intent = new Intent();
intent.putExtra("position",position);
setResult(Activity.RESULT_OK,intent);
}
finish();
}
更改 onBackPressed()
as.You 刚刚完成 activity 没有返回结果。
在这种情况下,还有一件事 super.onBackPressed()
会做与 finish.So 相同的事情,只需调用 one 。
@Override
public void onBackPressed() {
if (hasChanges){
Intent intent = new Intent();
intent.putExtra("position",position);
setResult(Activity.RESULT_OK,intent);
}
super.onBackPressed();
}