我有一个包含2个片段的viewPager。 问题出在第一个片段内。它包含以下 layout.xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<include
android:id="@+id/first"
layout="@layout/view_part"/>
<include
android:id="@+id/second"
layout="@layout/view_part"/>
<include
android:id="@+id/third"
layout="@layout/view_part"/>
</LinearLayout>
现在为 view_part.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"
>
<!-- some other views -->
<ProgressBar
android:id="@+id/ProgressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100" />
</RelativeLayout>
对于我所拥有的片段中的 onCreateView 方法:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView= inflater.inflate(R.layout.layout, container, false);
(RelativeLayout) rl1 = (RelativeLayout) rootView.findViewById(R.id.first);
(RelativeLayout) rl2 = (RelativeLayout) rootView.findViewById(R.id.second);
(RelativeLayout) rl3 = (RelativeLayout) rootView.findViewById(R.id.third);
((ProgressBar) rl1.findViewById(R.id.ProgressBar)).setProgress(25);
((ProgressBar) rl2.findViewById(R.id.ProgressBar)).setProgress(50);
((ProgressBar) rl3.findViewById(R.id.ProgressBar)).setProgress(75);
return rootView;
}
片段第一次加载一切都很好。所有进度条都显示了不同的进度。
然而,当我旋转屏幕,或者视图由viewPager自动解除分配时,它再次调用onCreateView函数,但这次所有progressBars显示75%,这是我设置的最后一个。