java - 当 EditText 为空时防止 AlertDialog 关闭

标签 java android dialog android-alertdialog

因此,无需创建自定义对话框,因为我目前有许多对话框布局,并且不想为每个对话框都创建自定义对话框,有没有一种方法可以防止在按下肯定按钮时关闭此对话框EditText 是空的?

目前,每次我按 Enter 键时它都会关闭对话框,并且 EditText 字段中没有任何内容。

public AlertDialog webpageDialog() {
    AlertDialog.Builder webpageDialogBuilder = new AlertDialog.Builder(context);
    LayoutInflater inflater = LayoutInflater.from(context);
    webpageDialogBuilder.setView(inflater.inflate(R.layout.dialog_webpage, null))
            .setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    final AlertDialog webpageDialog = webpageDialogBuilder.create();

    webpageDialog.setButton(DialogInterface.BUTTON_POSITIVE, context.getString(R.string.enter), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            EditText webpageInput = (EditText) webpageDialog.findViewById(R.id.dw_et_webpage_address);
            Log.d(TAG, "Positive on click");
            if(TextUtils.isEmpty(webpageInput.getText().toString())){
                Log.d(TAG, "Edit text empty");
                webpageInput.setError(context.getString(R.string.error_web_required));
            } else {
                Log.d(TAG, "Edit text not empty");
                ms.setUriString("http://" + webpageInput.getText().toString());
                ms.returnWithResult(1);
                dialog.cancel();
            }
            Log.d(TAG, "Returning");
        }
    });
    Log.d(TAG, "Returning dialog");
    return webpageDialog;
}

最佳答案

我就是这么做的。

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

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        EditText yourEditText = new EditText(this);
        layout.addView(yourEditText);

        builder.setView(layout);

        // Set up the buttons
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        final AlertDialog dialog = builder.create();

        dialog.show();

        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if ("".equals(yourEditText.getText().toString().trim())) {
                    //this will stop your dialog from closing
                    yourEditText.setError("This field is required!");
                    return;

                }

                //you logic here


                dialog.dismiss();

            }
        });

关于java - 当 EditText 为空时防止 AlertDialog 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707978/

相关文章:

android - 如何获取我的应用程序的主要 Activity 类或类名?

android - 在多层android google maps中传播事件

android - 为什么AChartEngine饼图在对话框中不显示?

css - 对话框显示在页面底部

Java - 指的是实现的类

java - 计算列表列表中对象属性的总和(带流)

java - SonarQube 4.0 - 启动时出现 LifeCycleException,https 端口未注释 - 原因?

java - 连接多个字符串时会创建多少个字符串对象?

Android:使用 DrawerLayout 和 YouTubePlayerSupportFragment

android - 如何更改 Dialog Cast Companion Library android 上的主题