在我的应用中,我使用的是FragmentStatePagerAdapter
ViewPager
。
一切正常,但是当我从后台来的时候,记忆被清理了。
在这种情况下,有些the fragments have disappeared
。消失的碎片不可见,但确实采取了洞屏幕。我看不到任何东西。
是什么导致这种情况?
谢谢!
答案 0 :(得分:0)
可能的解决方案,考虑到问题定义不佳:
重新创建活动后,会重新显示片段。因此,视图中的窗口小部件链接到上一个活动,并且您没有正确地重新膨胀视图并重新连接onCreateView()中的窗口小部件(重做findByID()命令)。
每次重新创建Activity时,所有Fragments都必须在onCreateView()中重做这些内容。
答案 1 :(得分:0)
在onCreate
尝试设置片段中的setRetainInstance(true);
。
答案 2 :(得分:0)
我正在使用此代码...在另一个文件(可能是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...
}