如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面?

如果Fragment已经存在,试图通过fragment.setArguments(bundle)传递参数将导致异常:

 00:14:55.375: E/AndroidRuntime(8492): java.lang.IllegalStateException: Fragment already active
 00:14:55.375: E/AndroidRuntime(8492):     at android.support.v4.app.Fragment.setArguments(Fragment.java:548)

我更新Fragment的常用办法是,为Fragment定义一个public的方法:

// To update fragment in ViewPager, we should implement a public method for the fragment,
// and do updating stuff in this method.
public void updateDate(Date date) {
    mDate = date;
    mTextView.setText(mDate.toString());
}

然后获取需要更新的Fragment,再然后调用这个方法。
考虑到你只有4个Fragment,可以尝试在activity内用一个Array或者List保存这4个fragment的实例(这种法子比较笨)。
而且需要使用FragmentPagerAdapter,而不是FragmentStatePagerAdapter,这样在ViewPager中切换页面时,fragment的实例也不会被销毁。

你可能感兴趣的:(如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面?)