0

在我的应用程序中,我使用FragmentStatePagerAdapter的是ViewPager.

除了当我来自后台并且清理内存时,一切都运行良好。

在这种情况下,一些the fragments have disappeared. 消失的碎片不可见,但确实采取了孔筛。我什么都看不见。

什么可能导致这种情况?

谢谢!

4

3 回答 3

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...

}
于 2013-12-25T09:16:19.477 回答
0

考虑到问题定义不佳,可能的解决方案:

重新创建 Activity 后重新显示 Fragment。因此,视图中的小部件链接到前一个 Activity,并且您没有正确地重新膨胀视图并在 onCreateView() 中重新连接小部件(重做 findByID() 命令)。

任何时候重新创建 Activity,所有 Fragment 都必须在 onCreateView() 中重做这些事情。

于 2013-12-24T20:53:41.277 回答
0

在片段中onCreate尝试设置。setRetainInstance(true);

于 2013-12-25T06:18:47.303 回答