Android DialogFragment在螢幕旋轉之後,輸入框內的文字消失的原因
阿新 • • 發佈:2019-02-08
在剛開始學習DialogFragment時,建立了一個測試的DialogFragment:
public class TestDialogFragment extends DialogFragment{
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return builder.setView(R.layout.test_dialog).create();
}
}
佈局檔案為:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="OK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
然後在測試的Activity裡點選按鈕顯示DialogFragment,輸入文字,如圖:
然後旋轉螢幕發現對話方塊沒有消失,但是輸入的資訊卻不見了:
沒辦法,只能找原因,看問題出在哪裡。通過對比自己和網上demo的佈局檔案,分析發現:我為了快速測試dialog的效果,寫佈局時並沒有給EditText新增id,這就是問題產生的根本原因。當我加上id之後:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="OK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
再次測試發現輸入的文字就不會消失了。