如何验证EditText?

时间:2014-01-24 08:03:32

标签: android

我正在做一个短信应用..其中我试图验证edittext(即如果用户不会输入电话号码然后它会显示请输入号码),但它没有执行那些部分..请检查它并给我一些建议....我的代码在这里..提前谢谢你..

public class MainActivity extends Activity {

    Button btnSend;
    EditText txtPhoneNo;
    EditText txtSMS; 
    String phoneNo, SMS;

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

        btnSend=(Button) findViewById(R.id.buttonSend);
        txtPhoneNo=(EditText) findViewById(R.id.editTextPhoneNo);
        txtSMS=(EditText) findViewById(R.id.editTextSMS);

        btnSend.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                phoneNo=txtPhoneNo.getText().toString();
                SMS=txtSMS.getText().toString();

                if(phoneNo.equals(" ") || phoneNo == null) {
                    Toast.makeText(getBaseContext(), "Please Enter the number !", Toast.LENGTH_LONG).show();
                }
                else {
                MyAsync ma = new MyAsync();
                ma.execute();
                }
            }
        });
    }

    class MyAsync extends AsyncTask<Void,Void,Void> {

        ProgressDialog pd;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

            pd = ProgressDialog.show(MainActivity.this, "Wait!", "Sending...");
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // TODO Auto-generated method stub

                try {
                    SmsManager smsManager=SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNo, null, SMS, null, null);

            } catch (Exception e) {             
                    Toast.makeText(getApplicationContext(), "SMS faild, please try again later!",Toast.LENGTH_LONG).show();
                    e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);

            pd.cancel();
            Toast.makeText(getApplicationContext(),"Sent",Toast.LENGTH_LONG).show();
        }

    }


}

4 个答案:

答案 0 :(得分:2)

您正在使用以下代码来确定用户是否输入了任何内容 -

phoneNo.equals(" ") || phoneNo == null

首先,当用户将EditText保持为空时,它将是一个0长度的字符串&#34;&#34;而不是空间&#34; &#34;,您正在测试。

其次,你为什么要进行null检查?您的布局是否可能没有EditText字段?并且,如果可能的话,null检查应该是第一件要检查的事情。因为,如果它可以null,那么您的应用肯定会崩溃,因为您在equals()检查之前在null对象上测试了null

答案 1 :(得分:1)

而不是这些代码,

if(phoneNo.equals(" ") || phoneNo == null) {
                    Toast.makeText(getBaseContext(), "Please Enter the number !", Toast.LENGTH_LONG).show();
                }

尝试以下代码,

//修剪变量

phoneNo=txtPhoneNo.getText().toString().trim();

//然后条件

if(phoneNo.length() == 0 && phoneNo != null) {
                    Toast.makeText(getBaseContext(), "Please Enter the number !", Toast.LENGTH_LONG).show();
                }

答案 2 :(得分:1)

要做到这一点,不需要使用String并将edit-text的内容传递给字符串。您可以通过以下代码直接检查。

           if(txtPhoneNo.length()<=0) 
            {
                Toast.makeText(getBaseContext(), "Please Enter the number !", Toast.LENGTH_LONG).show();
            }
            else {
            MyAsync ma = new MyAsync();
            ma.execute();
            }

答案 3 :(得分:1)

如果您想尝试更多内容,请不要在点击按钮上查看验证。 之前使用: TextWatcher

您的活动实现了android.text.TextWatcher接口 您将TextChanged侦听器添加到EditText框

txt1.addTextChangedListener(this);

在重写的方法中,您可以使用afterTextChanged(Editable s)方法,如下所示:

@Override
public void afterTextChanged(Editable s) {
// validation code goes here
}

您可以直接检查EditText框的内容,如

String txt1String = txt1.getText().toString();
// Validate txt1String