我有一个Fragment
,它在横向和纵向方向上使用不同的布局。在横向模式下,根元素为LinearLayout
,而在纵向模式下则为ScrollLayout
:
RES /布局/ fragment.xml之
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".NewBathingSiteFragment"
tools:showIn="@layout/activity_new_bathing_site"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/nbs_scrollView">
....
RES /布局脊/ fragment.xml之
<LinearLayout
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".NewBathingSiteFragment"
tools:showIn="@layout/activity_new_bathing_site"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/nbs_linearLayout">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/nbs_scrollView">
...
我在方向更改时收到此错误:
java.lang.IllegalArgumentException: Wrong state class, expecting View State but
received class android.widget.ScrollView$SavedState instead. This usually
happens when two views of different type have the same id in the same hierarchy.
This view's id is id/newBathingSiteFragment. Make sure other views do not use
the same id.
两个视图在同一个布局中没有相同的ID(它们在两个不同的布局中具有相同的ID,因为我需要使用findViewById()
找到它们)。 ID newBathingSiteFragment
是Fragment
的ID,在活动布局中以XML格式设置。
我能够通过添加LinearLayout
作为纵向模式的根元素来解决问题,使结构与横向模式相同(除了在横向模式下还有一个视图显示在LinearLayout
旁边的ScrollView
。
这是首选解决方案吗?或者是否有更好的方法,而不添加&#34;不必要的&#34; LinearLayout
到肖像模式?