如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面
展开全部
如果Fragment已经存在,试图通过fragment.setArguments(bundle)传递参数将导致异常:
12-02 00:14:55.375: E/AndroidRuntime(8492): java.lang.IllegalStateException: Fragment already active
12-02 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的实例也不会被销毁。
12-02 00:14:55.375: E/AndroidRuntime(8492): java.lang.IllegalStateException: Fragment already active
12-02 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的实例也不会被销毁。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询