2016-07-22 49 views
0

我試圖在viewpager中顯示一些片段。 我開始使用FragmentStatePagerAdapter getItem不叫

FragmentTransaction transaction = appCompatActivity.getFragmentManager().beginTransaction(); 
transaction.replace(R.id.activity_main_frame, navItem.getFragment()).commit(); 

在第一時間一切正常,從NavigationDrawer的PlanFragment,但如果我從NavigationDrawer選擇另一個片段,並回到PlanFragment事後viewpager顯示沒有內容(選項卡可見)。如果試圖切換選項卡,選項卡的行爲會變得非常瘋狂,以便指示條停在中間位置,並且非常緩慢(指示條不會像往常一樣跳到下一個選項卡條目)

我發現第二次不調用FragmentStatePagerAdapter中的getItem()方法。 我已經嘗試使用getChildFragmentManager(),但這不起作用。我也使用API​​ Level 16,所以這是不可能使用的。 我正在使用android.support.v13作爲片段支持。

public class PlanFragment extends Fragment { 

    Toolbar toolbar; 
    ViewPager viewPager; 
    PagerAdapter adapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_vplan, container, false); 

     ((AppCompatActivity) getActivity()).getSupportActionBar().setElevation(0); 

     viewPager = (ViewPager) view.findViewById(R.id.viewpager); 


     TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); 

     tabLayout.removeAllTabs(); 
     tabLayout.addTab(tabLayout.newTab().setText("MONDAY")); 
     tabLayout.addTab(tabLayout.newTab().setText("TUESDAY")); 
     adapter = new PagerAdapter(getFragmentManager(), tabLayout.getTabCount()); 

     viewPager.setAdapter(adapter); 

     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

     tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 

      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 

     return view; 
    } 

    public class PagerAdapter extends FragmentStatePagerAdapter { 
     int tabCount; 

     public PagerAdapter(FragmentManager fm, int tabcount) { 
      super(fm); 
      this.tabCount = tabcount; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Log.i("ERROR", "YO"); 
      return new TestFragment(); 
     } 

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

<android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 


     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_gravity="bottom"> 
     </android.support.design.widget.TabLayout> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

</android.support.design.widget.CoordinatorLayout> 

在viewpager表示

public class TestFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_test, container, false); 

     return view; 
    } 

} 

TestFragment XML片段:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Nulla quis lorem ut libero malesuada feugiat. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Vivamus suscipit tortor eget felis porttitor volutpat." /> 
    </android.support.v4.widget.NestedScrollView> 

回答

0

您需要某個setOffScreenPageLimit以便其他頁面可用。默認值爲1,因此在您滑動時沒有任何可用內容。

+0

並且我應該設置多少個號碼?爲什麼它會工作? – ForJ9

+1

這並沒有改變任何東西。 – ForJ9

+0

嗨ForJ9,你能找到一個解決方案?我遇到了同樣的問題。謝謝 – Jaz

相關問題