使用不同的ID扩展ViewPagers

时间:2017-07-19 10:27:24

标签: android android-layout android-viewpager layout-inflater android-inflate

我想动态地将ViewPagers添加到Fragment。例如,我创建了xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/tvHeader"
        android:textColor="@color/black"
        android:textSize="18sp"
        android:layout_margin="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <android.support.v4.view.ViewPager
        android:id="@+id/vpUsers"
        android:layout_width="match_parent"
        android:layout_height="85dp" />

</LinearLayout>

并用它来扩充视图。但ViewPagers显示不正确。看起来与ViewPagers的相同ID相关的问题。当我删除android:id="@+id/vpUsers"时出现错误:

 java.lang.IllegalStateException: ViewPager with adapter com.raybytes.SMSAddict.adapters.UserSectionAdapter$MyFragmentPagerAdapter@11a219d0 requires a view id

同样的问题,如果我以编程方式创建ViewPagers,因为ID已被重新加入,但手动设置ID是危险的。

如何使用不同的ID来膨胀或以编程方式创建少量ViewPagers? (ViewPagers的数量未知)

1 个答案:

答案 0 :(得分:0)

这里描述的解决方案可能适用于您的情况: Put a viewpager in a popup window 基本上,您必须将此添加到您的资源:

<item name="viewpager" type="id" />

并致电

viewPager.setId(R.id.viewpager);