0

私のアプリではFragmentStatePagerAdapterViewPager.

私がバックグラウンドから来て、メモリが消去されたときを除いて、すべてうまくいっています。

その場合、一部のthe fragments have disappeared. 消えた破片は見えませんが、ホールスクリーンを取ります。何も見えません。

何が原因でしょうか?

ありがとう!

4

3 に答える 3

0

問題定義が貧弱であることを考えると、考えられる解決策は次のとおりです。

アクティビティが再作成された後、フラグメントが再表示されています。したがって、ビュー内のウィジェットは前のアクティビティにリンクされており、onCreateView() でビューを正しく再インフレートしてウィジェットを再接続していません (findByID() コマンドをやり直しています)。

アクティビティが再作成されるたびに、すべてのフラグメントが onCreateView() でこれらのことをやり直す必要があります。

于 2013-12-24T20:53:41.277 に答える
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

Fragmentsに設定してみonCreateてください。setRetainInstance(true);

于 2013-12-25T06:18:47.303 に答える