一个activity中有四个fragment,ABCD,Dfragment中有请求数据库并得到返回信息,然后给Dfragment中赋值的操作,从Dfragment跳转别的activity进行更改信息操作之后点击确认,该activity被finish吊并完成上传回到Dfragment,怎么让再次回到Dfragment中使该fragment进行数据刷新的操作?我在resume中调用向服务器请求数据的操作没有效果。
从activity回到fragment生命周期
我想知道的是 你的activity装的这个fragment使用的add添加的还是replace 如果是replace的话 跳转后fragment会销毁的 再回来的时候是重新创建了fragment 你就不应该在resume里面去请求 你可以试一下在oncreate()里面在请求一次数据!
在重写onCreateView()方法,回调一下这个这个方法,把刷新的代码在这里调用就可以了,
我也遇到了这个问题,已经解决了。比如说现在有一个MainActivity包括A,B,C、D共4个fragment,比如说D中点击按钮跳转至OtherActivity,最后从
OtherActivity带回了一个数据phone
String phone = data.get(position).get("phone");
Intent data = new Intent();
data.putExtra("phone",phone);
OtherActivity.this.setResult(11, data);
OtherActivity.this.finish(); //关闭当前页面
想要返回到MainActivity指定的D页面,需要做如下操作:
1、在D中启动OtherActivity的时候
Intent intent=new Intent(mActivity, OtherActivity.class);
mActivity.startActivityForResult(intent,10);
其中mActivity为在D页面中
mActivity=(MainActivity) getActivity();
以上已经完成了从D到OtherActivity,以及从OtherActivity再回到D的过程,这个时候回回调一MainActivity的一个方法
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==10 && resultCode==11){//如果是选择联系人页面返回的请求
D.onActivityResult(requestCode,resultCode,data);
}
}
同样在D页面中要重写一个方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==11 && resultCode==12){//如果是选择联系人页面返回的请求
String phone=data.getExtras().getString("phone");
et_select_phone.setText(phone);
}
}
这里其实已经得到了从OtherActivity中传过来的值phone