在我的应用程序中,我使用FragmentStatePagerAdapter
的是ViewPager
.
除了当我来自后台并且清理内存时,一切都运行良好。
在这种情况下,一些the fragments have disappeared
. 消失的碎片不可见,但确实采取了孔筛。我什么都看不见。
什么可能导致这种情况?
谢谢!
在我的应用程序中,我使用FragmentStatePagerAdapter
的是ViewPager
.
除了当我来自后台并且清理内存时,一切都运行良好。
在这种情况下,一些the fragments have disappeared
. 消失的碎片不可见,但确实采取了孔筛。我什么都看不见。
什么可能导致这种情况?
谢谢!
我正在使用这段代码......在另一个文件(也许是TestViewPager.java)上测试它,看看它是否有效并且可能适应你的代码。
对我来说......它就像魔法一样工作:P 但是......我是 Android 的新手,所以也许你需要另一个代码解决方案(对不起,我说西班牙语:P)
public class Home_ViewPager extends ActionBarActivity
implements ActionBar.TabListener {
funcionPagerAdapter miPagerAdapter;
ViewPager miViewPager;
public void onCreate(Bundle EstadoInstanciaSalvada){
super.onCreate(EstadoInstanciaSalvada);
setContentView(R.layout.home_viewpager);
miPagerAdapter = new funcionPagerAdapter(getSupportFragmentManager());
miViewPager = (ViewPager) findViewById(R.id.vpContenedor);
miViewPager.setAdapter(miPagerAdapter);
final ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//Set a Tab when a Fragment is selected
miViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
actionBar.addTab(actionBar.newTab().setText(R.string.tab1_title).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.tab2_title).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.tab3_title).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.tab4_title).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.tab5_title).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.tab6_title).setTabListener(this));
miViewPager.setCurrentItem(1);
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
}
@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
miViewPager.setCurrentItem(arg0.getPosition());
}
@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
}
public static class funcionPagerAdapter extends FragmentPagerAdapter{
public funcionPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int itemCapturado) {
switch(itemCapturado){
case 0: return new fragment_1();
case 1: return new fragment_2();
case 2: return new fragment_3();
case 3: return new fragment_4();
case 4: return new fragment_5();
case 5: return new fragment_6();
default:
Fragment miFragmento = new fragment_1();
return miFragmento;
}
}
@Override
public int getCount() {
return 6;
}
}
public static class fragment_1 extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] arrayDeValores = new String[] { "yourItem1", "yourItem2", "yourItem3", "yourItem4", "yourItem5", "yourItem6"};
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, arrayDeValores));
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Do something with the data
}
}
//Others Fragments Here...
}
考虑到问题定义不佳,可能的解决方案:
重新创建 Activity 后重新显示 Fragment。因此,视图中的小部件链接到前一个 Activity,并且您没有正确地重新膨胀视图并在 onCreateView() 中重新连接小部件(重做 findByID() 命令)。
任何时候重新创建 Activity,所有 Fragment 都必须在 onCreateView() 中重做这些事情。
在片段中onCreate
尝试设置。setRetainInstance(true);