滑动或选择选项卡时重新加载或刷新列表片段?
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 实现。
我无法 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 实现。