Android DialogFragment在屏幕旋转之后,输入框内的文字消失的原因

在刚开始学习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,输入文字,如图:

dialogframent

然后旋转屏幕发现对话框没有消失,但是输入的信息却不见了:

这里写图片描述

没办法,只能找原因,看问题出在哪里。通过对比自己和网上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>

再次测试发现输入的文字就不会消失了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值