【问题标题】:Dismiss AlertDialog.Builder [duplicate]关闭 AlertDialog.Builder [重复]
【发布时间】:2019-02-10 19:46:11
【问题描述】:

在我的代码中,我正在尝试进行 AlertDialog 登录,但是一旦按下按钮我就无法关闭它,有人知道吗?我尝试从构建器创建一个 AlertDialog 对象,但它不起作用。这是我的代码:

public class MainActivity extends AppCompatActivity {

ImageButton login;
Button signin;
EditText user, password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    login = (ImageButton)findViewById(R.id.login);

    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            view.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.imagen_click));
            createSigninDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
    });

}

public AlertDialog createSigninDialog (){

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    LayoutInflater inflater = MainActivity.this.getLayoutInflater();

    View view = inflater.inflate(R.layout.dialog_signin, null);

    builder.setView(view);

    signin = (Button)view.findViewById(R.id.button_ingresar);
    user = (EditText)view.findViewById(R.id.user_input);
    password = (EditText)view.findViewById(R.id.password_input);

    signin.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.imagen_click));
                    if (user.getText().toString().equals("1234567890") && password.getText().toString().equals("1234")){
                        Toast.makeText(MainActivity.this, "Login", Toast.LENGTH_SHORT).show();
                        //Dismiss here
                    } else {
                        Toast.makeText(MainActivity.this, "Datos incorrectos", Toast.LENGTH_SHORT).show();
                        //Dismiss here
                    }
                }
            }
    );

   return builder.show();
}
}

【问题讨论】:

    标签: android android-alertdialog dismiss


    【解决方案1】:

    您应该调用builder.create() 而不是调用builder.show()。它会返回一个对话框实例给你,然后show()dismiss() 方法将可供调用。

    【讨论】:

      【解决方案2】:

      你的函数应该是这样的:

      public AlertDialog createSigninDialog (){
      
              final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
      
              LayoutInflater inflater = MainActivity.this.getLayoutInflater();
      
              View view = inflater.inflate(R.layout.dialog_signin, null);
      
              builder.setView(view);
      
              final AlertDialog dialog = builder.create();
      
              signin = (Button)view.findViewById(R.id.singing);
              user = (EditText)view.findViewById(R.id.user_input);
              password = (EditText)view.findViewById(R.id.password_input);
      
      
              signin.setOnClickListener(
                      new View.OnClickListener() {
                          @Override
                          public void onClick(View v) {
                              if (user.getText().toString().equals("1234567890") && password.getText().toString().equals("1234")){
                                  Toast.makeText(MainActivity.this, "Login", Toast.LENGTH_SHORT).show();
                                  //Dismiss here
                                  dialog.dismiss();
                              } else {
                                  Toast.makeText(MainActivity.this, "Datos incorrectos", Toast.LENGTH_SHORT).show();
                                  //Dismiss here
                                  dialog.dismiss();
                              }
                          }
                      }
              );
      
              return dialog;
          }
      

      然后你可以这样调用它:

      createSigninDialog().show();
      

      【讨论】:

      • 解决了!非常感谢,我有类似的东西,但最后总是退回建设者,我没有尝试过。你解决了我的问题。
      • 很高兴为您提供帮助。编码愉快!
      猜你喜欢
      • 2012-07-02
      • 2011-10-13
      • 2013-08-27
      • 1970-01-01
      • 2015-02-14
      • 2018-11-05
      • 1970-01-01
      • 2020-07-25
      • 2021-04-23
      相关资源
      最近更新 更多