我有一個活動,其中包含2個片段相鄰的佈局。在每個片段中,我有一個ViewPager。由於我需要兩個片段看起來相同的方式,我使用相同的佈局XML,其中包含一個ViewPager。Android:2片段共享相同ViewPager XML佈局
現在,當我測試應用程序,只有第一個片段的ViewPager似乎工作。第二個片段顯示一個PagerTitleStrip,我可以翻閱它,但它不顯示ViewPager中的片段。
爲什麼不是第二個ViewPager也顯示碎片?這是什麼造成的? 他們使用相同佈局的問題是什麼?無論如何,它不是一個不同的對象嗎?
了2個片段在活動分享看起來像這樣的佈局:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/search_mapping_pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textColor="#fff" />
</android.support.v4.view.ViewPager>
兩個片段實例化ViewPager以同樣的方式:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search_mapping,
container, false);
mSectionsPagerAdapter = new SectionsPagerAdapter(mActivity
.getSupportFragmentManager());
mViewPager = (ViewPager) view.findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
return view;
}
編輯:更多的代碼顯示我的SectionsPagerAdapter
:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new SuperclassFragment();
Bundle args = new Bundle();
args.putInt(SuperclassFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
...
}
任何提示,我應該尋找錯誤的原因?如有必要,我當然可以在這裏包含更多的代碼。
您應該將Viw = ewPage放在線性/相對佈局下。此外,你可以請把SectionsPagerAdapter代碼,因爲它是有趣的看到getItem函數 – Amit
隨着線性/相對佈局你是對的,我想。我已經把SectionsPagerAdapter的代碼。可能問題是他們使用相同的'FragmentManager'實例? – Terry
我覺得,line Fragment fragment = new SuperclassFragment();是問題。 View Paget將調用getItem方法,此時,您將返回SuperclassFragment。它是一個父類,因此View Pager不知道要渲染哪個片段,它將使用它在classpath中找到的第一個片段,但我不確定 – Amit