【发布时间】:2016-12-25 14:54:36
【问题描述】:
我目前面临将 ViewPager 放入另一个 ViewPager 的问题,两者都可以滑动。我已经成功创建了我的第一个 ViewPager,它包含三个页面,中间的一个是第二个(内部)ViewPager,其中包含 3 个页面。
| ACTIVITY-1 | VIEWPAGER | ACTIVITY-1 |
| AC1 | AC2 | AC3 |
父 ViewPager 在滑动时工作正常,但内部 ViewPager 无法显示内部活动,因此也无法滑动。
父 ViewPager :
public class MainSlider extends ActionBarActivity {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_slider);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
关联的 XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.slidingapp.MainSlider" >
<android.support.v4.view 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"/>
</RelativeLayout>
适配器 ViewPager:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
}
还有片段:
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView;
Bundle args = getArguments();
switch (args.getInt(ARG_SECTION_NUMBER)) {
case 1:
rootView = inflater.inflate(R.layout.activity_first_page, container, false);
break;
case 2:
rootView = inflater.inflate(R.layout.activity_second_swap, container, false);
break;
case 3:
rootView = inflater.inflate(R.layout.activity_third_page, container, false);
break;
default:
rootView = inflater.inflate(R.layout.fragment_main_slider, container, false);
break;
}
return rootView;
}
}
子片段的代码与父片段的代码相同,请为子 ViewPager 提供任何解决方案,因为它无法在其中加载任何活动。
【问题讨论】:
-
子(内部)ViewPager 工作正常,并在我从父 viewpager 单独运行时显示活动。
-
这个问题你解决了吗?
-
您好,您做的事情与您类似,但遇到了同样的错误。你设法解决了你的错误吗?
-
我确实解决了这个问题并为此使用了一个库。 This 是链接。