当EditText为空时阻止AlertDialog关闭

时间:2017-04-30 15:20:11

标签: java android dialog 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;
}

2 个答案:

答案 0 :(得分:1)

这就是我这样做的方式。

svg.append("path")
    .datum(data)
    .attr("class", "d3-area")
    .attr("d", area)
    .style('fill', color)
    .transition() // begin animation
        .duration(1000)
        .attrTween('d', function() {
            var interpolator = d3.interpolateArray(startData, data);
            return function (t) {
                return area(interpolator (t));
            }
        });

答案 1 :(得分:0)

我希望以下行可以提供帮助,

webpageDialogBuilder.setCancelable(false);