滑动或选择选项卡时重新加载或刷新列表片段?

Reload or refresh list fragment when swiped or when tab is selected?

我无法 reload/refresh Listfragment(CfFragment(),PfFragment(),IfFragment() 在我下面的代码中)当标签被选中或滑动时,可以任何人告诉我我要去哪里 wrong.My 代码在第一次创建时运行良好,但在滑动时 reload/refresh 或 selected.If 我更改了第一个 listfragment 中的任何内容它应该影响第二个列表片段等等...... 请任何人帮助我 out.it 将不胜感激。 谢谢你。

 public class busy extends FragmentActivity implements
        ActionBar.TabListener {


SessionManager session;

AppSectionsPagerAdapter mAppSectionsPagerAdapter;
static ServiceURL URL;

static AlertDialogManager alert = new AlertDialogManager();

ViewPager mViewPager;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    setContentView(R.layout.busy);      

    session = new SessionManager(getApplicationContext());              

    mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());

    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mAppSectionsPagerAdapter);
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {

                    actionBar.setSelectedNavigationItem(position);
                }
            });

    for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar.newTab().setText(mAppSectionsPagerAdapter.getPageTitle(i)).setTabListener(this));
    }
}



@Override
public void onTabUnselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabSelected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) {

    mViewPager.setCurrentItem(tab.getPosition());
    //mViewPager.setAdapter(mAppSectionsPagerAdapter);

}

@Override
public void onTabReselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction) {
}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {

    public AppSectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            return new CfFragment();
        case 1:
            return new PfFragment();
        case 2:
            return new IfFragment();

        }
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }

    public CharSequence getPageTitle(int position) {

        switch (position) {
        case 0:
            return "Confy";

        case 1:
            return "Peny";

        case 2:
            return "Incy";

        default:

            break;
        }
        return null;
    }
}

}

将您的 AppSectionsPagerAdapter class 导出为

public static class AppSectionsPagerAdapter extends FragmentStatePagerAdapter

而不是

public static class AppSectionsPagerAdapter extends FragmentPagerAdapter

基本上,FragmentPagerAdapter 将创建的 Fragment 保存在内存中,而 FragmentStatePagerAdapter 在它们移入和移出视图时销毁并重新创建它们。

还有两件事:

1. 确保您 不是 在任何 Fragment 中呼叫 setRetainInstance(true),否则它们不会被重新创建。

2. 添加

viewPager.setOffscreenPageLimit(0);

到您的代码。

编辑:

而不是

Activity -> ViewPager -> Fragments

将结构创建为

Activity -> Fragment -> ViewPager -> Nested Fragments

这将确保每个 Fragment 在选项卡更改时刷新。参见 this post 实现。