2017-04-18 15 views
1

私はアンドロイドプロジェクトに取り組んでいます。私は、ビューページとフラグメントの異常な動作を発見しました。ビューページャ内のいくつかのフラグメントがロードされると、フラグメントの一部は、通常10秒以上の間、コンテンツをまったく表示しません。その後、内容が正しく表示されます。ここでAndroidの断片にはコンテンツが表示されません

は私が持っているものです。

そのUIはviewpager mMainPagerが含まれているMainActivityを使用しています。

private void setupViewPager() { 
     mMainPageAdapter = new MainPageAdapter(getSupportFragmentManager()); 
     mMainPager.setAdapter(mMainPageAdapter); 
     mMainPager.addOnPageChangeListener(this); 
     mMainPager.setOnSwipeOutListener(this); 
    } 

メインページアダプターは、MainActivity内で以下のように定義されています。

private class MainPageAdapter extends FragmentStatePagerAdapter { 

    public MainPageAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public int getCount() { 
     return NUMBER_OF_PAGES; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return Fragment0.newInstance(); 
      case 1: 
       return Fragment1.newInstance(); 
      case 2: 
       return Fragment2.newInstance(); 
      default: 
       return Fragment3.newInstace(); 
     } 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
    } 
} 

Fragment3が内部にネストviewpagerを持っている:それは4つの断片があります。そのビューページには4つのフラグメントが含まれています。

ChatsViewPager pagerChats; 

アダプタがcom.ogaclejapan.smarttablayout.utils.v4

FragmentStatePagerItemAdapter adapterSegChat = new FragmentStatePagerItemAdapter(getChildFragmentManager(), FragmentPagerItems.with(getActivity()) 
      .add(getString(R.string.string0), Fragment30.class) 
      .add(getString(R.string.string1), Fragment31.class) 
      .add(getString(R.string.string2), Fragment32.class) 
      .add(getString(R.string.string3), Fragment33.class) 
      .create()); 


    pagerChats.setAdapter(adapterSegChat); 

を使用していますMainActivityが起動されると、フラグメント2が表示されました。ユーザーがFragment3にスワイプすると、pagerChatsの4つのフラグメントがすべて正しく表示されます。スワイプは、これらの4つのフラグメント間で円滑に移行することができます。

ただし、ユーザーがFragment0とFragment1にスワイプした後、4つのフラグメントのうち2つをFragment3に戻すと、pagerChatsのFragment32とFragment33は表示されなくなります。エラーも凍結もありません。単に空白の画面が表示されます。

ユーザーが10秒を超えると、Fragment32とFragment33の内容が表示されます。

上記の処理を繰り返しても、同じことが再度発生します。

このことはこのようなものですなぜAPI実行し、24

をサムスンS7を使用していますか?それは記憶の制約のためですか?

+1

私の問題を解決しました。ありがとう。 – windchime

+0

あなたを助けてうれしい!すぐに多くの感謝と "戻ってくる"! – statosdotcom

答えて

関連する問題