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