Android 如何验证EditText?

Android 如何验证EditText?,android,Android,我正在做一个短信应用。。其中我尝试验证edittext(即,如果用户不输入电话号码,则会显示请输入号码),但它不会执行这些部分。。请检查一下并给我一些建议…我的代码在这里。。先谢谢你 public class MainActivity extends Activity { Button btnSend; EditText txtPhoneNo; EditText txtSMS; String phoneNo, SMS; @Override p

我正在做一个短信应用。。其中我尝试验证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();
        }

    }


}
公共类MainActivity扩展活动{
按钮BTN发送;
EditText txtPhoneNo;
编辑文本txtSMS;
字符串电话号码,短信;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSend=(按钮)findviewbyd(R.id.buttonSend);
txtPhoneNo=(EditText)findViewById(R.id.editTextPhoneNo);
txtSMS=(EditText)findViewById(R.id.editTextSMS);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
phoneNo=txtPhoneNo.getText().toString();
SMS=txtSMS.getText().toString();
if(phoneNo.equals(“”| | phoneNo==null){
Toast.makeText(getBaseContext(),“请输入数字!”,Toast.LENGTH_LONG.show();
}
否则{
MyAsync ma=新的MyAsync();
ma.execute();
}
}
});
}
类MyAsync扩展了AsyncTask{
进展性帕金森病;
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
pd=ProgressDialog.show(MainActivity.this,“等待!”,“发送…”);
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//TODO自动生成的方法存根
试一试{
SmsManager SmsManager=smsmsmanager.getDefault();
sendTextMessage(电话号码,空,短信,空,空);
}捕获(例外e){
Toast.makeText(getApplicationContext(),“SMS失败,请稍后再试!”,Toast.LENGTH\u LONG.show();
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
pd.cancel();
Toast.makeText(getApplicationContext(),“Sent”,Toast.LENGTH_LONG.show();
}
}
}

而不是这些代码

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

为此,无需获取字符串并将编辑文本的内容传递到字符串中。您可以通过以下代码直接检查

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

if(txtPhoneNo.length()您正在使用以下代码来确定用户是否输入了任何内容-

phoneNo.equals(" ") || phoneNo == null
首先,当用户将
EditText
保持为空时,它将是一个0长度的字符串“”,而不是您正在测试的空格“”


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

如果您想尝试更多内容,请不要在单击按钮时检查验证。 请先使用:TextWatcher执行此操作

您的活动实现了android.text.TextWatcher界面 将TextChanged侦听器添加到编辑文本框中

txt1.addTextChangedListener(this);
在被重写的方法中,您可以使用后文本更改(可编辑的s)方法,如下所示:

@Override
public void afterTextChanged(Editable s) {
// validation code goes here
}
您可以直接检查编辑文本框的内容,如

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

您可以设置edittext
android:inputType=“number”
的输入类型。因此,您可以只输入数字,然后使用
TextUtils.isEmpty(string)
来验证。“phoneNo.length()==0&&phoneNo==null”您的意思是“||”?此代码可以替换为“TextUtils.isEmpty(phoneNo)”“@lassana,哎呀,我是说!”null@Vigbyor,您应该首先检查null:if(phoneNo!=null&&phoneNo.length()=0)