Android 官方推荐:DialogFragment 创建对话框(3)

当用户输入帐号密码时,忽然旋转了一下屏幕,帐号密码不见了~~~是不是会抓狂

传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值,第二还会报异常,因为Activity销毁前不允许对话框未关闭。而通过DialogFragment实现的对话框则可以完全不必考虑旋转的问题。

我们直接把上面登录使用AlertDialog创建的登录框,拷贝到MainActivity中直接调用:

public void showLoginDialogWithoutFragment(View view)
 {
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  // Get the layout inflater
  LayoutInflater inflater = this.getLayoutInflater();

// Inflate and set the layout for the dialog
  // Pass null as the parent view because its going in the dialog layout
  builder.setView(inflater.inflate(R.layout.fragment_login_dialog, null))
    // Add action buttons
    .setPositiveButton("Sign in",
      new DialogInterface.OnClickListener()
      {
       @Override
       public void onClick(DialogInterface dialog, int id)
       {
        // sign in the user ...
       }
      }).setNegativeButton("Cancel", null).show();
 }

下面我分别点击两种方式创建的登录框,看效果图:

可以看到,传统的Dialog旋转屏幕时就消失了,且后台log会报异常~~~使用DialogFragment则不受影响。

好了,关于DialogFragment的介绍结束~~~~

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4f4d8b642732f5e0eba76d975ccfda72.html