Android使用Radio Buttons onClick方法处理片段旋转

时间:2014-04-16 17:11:10

标签: java android android-layout android-fragments

我有一个类似测试的应用程序。有很多单选按钮和无线电组。
在旋转期间,我将在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方法中出错了。

有人建议发生了什么事吗? :-)谢谢

1 个答案:

答案 0 :(得分:0)

当方向改变时,您的活动和碎片会重新创建。

您需要设置

android:configChanges="orientation|screenSize" 

在您的活动的清单中,以避免在方向更改时重新创建片段