我无法在选择或刷选标签时重新加载/刷新Listfragment( CfFragment(),PfFragment(),IfFragment()),任何人都可以告诉我我在哪里出错了。我的代码在第一次创建时运行良好,但是在刷卡或选中时它没有重新加载/刷新。如果我在第一个listfragment中更改任何内容,它应该影响第二个列表片段,依此类推... 请任何人帮助我。非常感谢。 谢谢。
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;
}
}
}
答案 0 :(得分:3)
将您的AppSectionsPagerAdapter
课程视为
public static class AppSectionsPagerAdapter extends FragmentStatePagerAdapter
而不是
public static class AppSectionsPagerAdapter extends FragmentPagerAdapter
基本上,FragmentPagerAdapter
会将创建的Fragment
保留在内存中,而FragmentStatePagerAdapter
会在移入和移出视图时重新销毁并创建它们。
还有两件事:
1。确保您不在任何setRetainInstance(true)
中呼叫Fragment
,否则他们将无法重新创建
2。添加
viewPager.setOffscreenPageLimit(0);
代码。
修改强>
而不是
Activity -> ViewPager -> Fragments
将结构创建为
Activity -> Fragment -> ViewPager -> Nested Fragments
这将确保在标签更改时刷新每个Fragment
。有关实施,请参阅this帖子。