关闭AlertDialog.Builder [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

在我的代码中,我正在尝试进行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 alertdialog dismiss
2个回答
0
投票

你的功能应该是这样的:

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();

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.