解决Fragment 使用回退栈,返回上一Fragment不刷新问题!

效果如图:
解决Fragment 使用回退栈,返回上一Fragment不刷新问题!
先介绍下场景:
第一个Fragment为A
第二个Fragment为B
A在onCreateView的时候会自动去数据库读取数据。更新View。
然后
点击A的【修改】,可以在B里对A的三个数据进行修改,修改完毕后,保存到本地数据库里。
点击【确认】返回A。
然而这时候A的值没有变化,跟踪代码看,A在onCreateView的时候读取数据库了,而且数据库的值也是改动后的。值也赋上了。但是A显示的时候还是修改前的值。。
----------------------------------------------
第一次用Fragmeng,所以对他不了解,没办法,只好问度娘。
搜索了很久都没有百度到解决方法,后来在群里询问了一些网友,都没有解决。

最后没办法自己一点一点的试,一点一点的研究呗。
先分析了一下
一、使用回退栈回到Fragment-A的时候,是不是只是显示没有做更新,或者显示的Fragment本来就是一个缓存,而不是最新的。(百度也说到这一点了,但是很多都没有了下文。。)

二、是不是Fragment生命周期哪里搞错了。

我先从回退栈入手,在Fragment-A跳转到B的时候,把A关闭,或者脱离Activity。
第一个猜想操作失败。。

后来就测试第二个猜想,在Fragment生命周期中做文章。(这个也是我一同事提醒的。)
我一般写Fragment 都是实现下面3个方法:
public class VipFragment extends Fragment {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
          //....更新View
          View view=inflater.inflate(R.layout.vip_fragment, null);
		return view;
	}
	@Override
	public void onPause() {
		super.onPause();
	}

根据Fragment生命周期发现:onResume()
所以在想,在这时候在修改View是不是就可以实现了。?
所以就做了如下修改:
public class VipFragment extends Fragment {
	private View view;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
          //把view设置为全局变量
          view=inflater.inflate(R.layout.vip_fragment, null);
		return view;
	}
@Override
	public void onResume() {
		//...更新View
		super.onResume();
	}
	@Override
	public void onPause() {
		super.onPause();
	}

然后运行。结果实现了。。
只能说自己运气还不错,如果这个问题解决不了,就会大改代码。
本来代码就很烂,再改改就不能见人了。- -

声明
        欢迎转载,但请保留文章原始出处
        [Iteye]- http://jnwsczh.iteye.com/blog/2019456

你可能感兴趣的:(android,Fragment,回退栈,Fragment刷新,数据刷新)