在ViewPager中刷新片段视图

时间:2016-05-05 20:25:37

标签: android android-viewpager fragment fragmentpageradapter fragmentmanager

在我的应用程序中,我在viewPager中有3个片段。 对于第一个片段,我想在按下按钮后重新加载视图(基本上再次调用onCreateView())。

要获得此功能,我决定使用FragmentTransactiondetach()attach()commit()片段。

在片段中,我创建了SetData()方法:

public void setData() {
    Fragment frg = null;
    frg = mainMenu.getFragmentByPosition();
    final android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.detach(frg);
    ft.attach(frg);
    ft.commit();
}

在包含viewPager的活动中,我有getFragmentByPosition()方法:

public Fragment getFragmentByPosition() {
    String tag = "android:switcher:" + R.id.viewpager + ":" + viewPager.getCurrentItem();
    return getSupportFragmentManager().findFragmentByTag(tag);
}

问题是我在getFragmentByPosition()

中得到NullPointerException

更新

问题在于我无法获得对当前显示的片段的引用。

adapter.getItem(1) - 返回null

getFragmentManager().getFragments().get(0) - 返回null

1 个答案:

答案 0 :(得分:0)

如果您有3个片段,请创建3个唯一字符串TAG1TAG2TAG3,然后使用其唯一标记添加每个片段

getSupportFragmentManager().beginTransaction().add(R.id.mycontainer, new MyFragment1(), TAG1).commit();

然后找到使用相同的标签

getSupportFragmentManager().findFragmentByTag(TAG1);