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>
並且我應該設置多少個號碼?爲什麼它會工作? – ForJ9
這並沒有改變任何東西。 – ForJ9
嗨ForJ9,你能找到一個解決方案?我遇到了同樣的問題。謝謝 – Jaz