The exception “java.lang.IllegalStateException: pages must fill the whole ViewPager2 (use match_parent)” occurs when using a ViewPager2 widget in Android and the child pages do not fill the entire available space within the ViewPager2. This error message suggests that we should use the “match_parent” attribute for the layout parameters of the child pages to fill the entire ViewPager2.
Let’s see an example to better understand this issue. Consider a layout file that contains a ViewPager2 widget with two child fragment pages. Each child page must be configured to fill the entire available space within the ViewPager2.
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
...
<!-- Child page Fragment 1 -->
<fragment
android:name="com.example.MyFragment1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Child page Fragment 2 -->
<fragment
android:name="com.example.MyFragment2"
android:layout_width="match_parent"
android:layout_height="match_parent" />
In this example, both MyFragment1 and MyFragment2 must have their layout_width and layout_height attributes set to “match_parent”. This ensures that both fragments fill the entire available space within the ViewPager2 and avoids the IllegalStateException being thrown.