0

如何要求用户将数据输入到 an中,并且在填充EditText之前不允许应用程序继续?EditText

现在,即使用户确认错误消息指出它EditText是空的并且是必需的,我的应用程序仍在继续进行。

         private final static int EMPTY_TEXT_ALERT = 0;

    protected Dialog onCreateDialog(int id) {

    switch(id) {

        case EMPTY_TEXT_ALERT: {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("oops!!")
                   .setPositiveButton("ok", new DialogInterface.OnClickListener() {

                       @Override
                       public void onClick(DialogInterface dialog, int which) {
                           dialog.cancel();
                       }
             });

             return builder.create();
        }
    }

    return null;


}




        public void sends(View v) {   

            DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);    

            int year = datePicker.getYear();
            int month = datePicker.getMonth();
            int day = datePicker.getDayOfMonth();
                 final EditText phone = (EditText) findViewById(R.id.editText2); 

            final EditText nameplate = (EditText) findViewById(R.id.editText3);  

            final EditText issue = (EditText) findViewById(R.id.editText4);  



                     String ph = phone.getText().toString();
                     if(ph.trim().equals("")) {
                            // text is empty

                            showDialog(EMPTY_TEXT_ALERT);

                        }
                    String np = nameplate.getText().toString();
                    if(np.trim().equals("")) {
                        // text is empty

                        showDialog(EMPTY_TEXT_ALERT);
                    }
                     String i = issue.getText().toString(); 
                     if(i.trim().equals("")) {
                            // text is empty

                            showDialog(EMPTY_TEXT_ALERT);
                        }


                     else
                         {StringBuilder s= new StringBuilder(100);
            s.append(year);
            s.append(". ");
            s.append(month+1);// month starts from 0 in this
            s.append(". ");
            s.append(day);
            s.append(". ");
            s.append(". ");
            s.append(ph);
            s.append(". ");
            s.append(np);
            s.append(". ");
            s.append(i);

            String st=s.toString();


            Intent emailIntentt = new Intent(android.content.Intent.ACTION_SEND); 
            emailIntentt.setType("plain/text");


            String aEmailList[] = { "shreyas.t@gmail.com" };  


            emailIntentt.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);  

            emailIntentt.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback");  


            emailIntentt.putExtra(android.content.Intent.EXTRA_TEXT, st);


            startActivity(emailIntentt); 
        } 

}}
4

3 回答 3

0

什瑞亚斯·塔拉尼

如何验证电话号码...输入超过 10 位应显示错误消息

如果您只是想测试 的长度String,只需获取String并将长度与最大长度 10 进行比较。

在您的validate(...)方法中执行类似于以下的操作:

String ph = phone.getText().toString();
if(ph.trim().equals("")) {
    showDialog(EMPTY_TEXT_ALERT);
} else if (ph.length() > 10) {
    showDialog(TEXT_TOO_LONG_ALERT);
}

你也可以让你EditText只允许数值。这将帮助您验证数字。您可以在 xml 文件或代码中执行此操作。

xml

android:inputType="TYPE_NUMBER_VARIATION_NORMAL"

代码

EditText.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);

您可以做的第一件事是添加一个validate(...)方法。在里面validate(...),您需要验证所有字段,如果有任何内容留空,则显示错误消息并停止应用程序进程。

如果所有字段都很好,则调用您的发送方法。并且send(...)应该只发送您的数据,而不是检查验证。

于 2012-08-11T15:43:17.517 回答
0

您可以在显示对话框后添加返回语句,如下所示。

if(i.trim().equals("")) {
                            // text is empty

                            showDialog(EMPTY_TEXT_ALERT);
                            return;
                        }

不过,使用 Toast 消息比使用 showDialog 更好。

于 2012-08-11T15:43:56.470 回答
0

我不知道你是如何调用你的 send() 方法的,但是在任何空错误之后,你可以在 showDialog() 之后立即添加一个 return 语句。这意味着在用户输入文本后,必须以某种方式通过 UI 重新调用 send() 方法。

如果您的 send() 方法是通过 onClick() 从按钮调用的,那么这意味着用户将看到带有错误的对话框,输入一些文本,然后单击按钮再次发送。

于 2012-08-11T15:44:25.213 回答