我有一个类似测试的应用程序。有很多单选按钮和无线电组。
在旋转期间,我将在onSaveInstanceState(...)中保存实际测试对象,然后在onCreateView(...)中恢复此对象。那里的一切都很完美。旋转后一切都设置好,工作正常。
样品:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
if(savedInstanceState != null)
mTest = (Test)savedInstanceState.getSerializable(TEST_SAVED);
else{
String userId = "";
if (getArguments() != null) {
userId = getArguments().getString(PACIENT_ID);
}
mTest = new Test(userId, "...");
}
...
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable(TEST_SAVED, mTest);
}
我正在直接用XML处理onClick上的单选按钮
<RadioButton
android:id="@+id/radioButtonOt1Btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="8"
android:onClick="onRadioButtonClicked" // HERE
android:text="10" />
但..当我在旋转后点击任何单选按钮时,一切都设置为NULL(加载TextViews,EditTexts ..当然还有我的Test对象)。
所以问题显然在XML onClick方法中出错了。
有人建议发生了什么事吗? :-)谢谢
答案 0 :(得分:0)
当方向改变时,您的活动和碎片会重新创建。
您需要设置
android:configChanges="orientation|screenSize"
在您的活动的清单中,以避免在方向更改时重新创建片段