Android 如何验证EditText?
我正在做一个短信应用。。其中我尝试验证edittext(即,如果用户不输入电话号码,则会显示请输入号码),但它不会执行这些部分。。请检查一下并给我一些建议…我的代码在这里。。先谢谢你Android 如何验证EditText?,android,Android,我正在做一个短信应用。。其中我尝试验证edittext(即,如果用户不输入电话号码,则会显示请输入号码),但它不会执行这些部分。。请检查一下并给我一些建议…我的代码在这里。。先谢谢你 public class MainActivity extends Activity { Button btnSend; EditText txtPhoneNo; EditText txtSMS; String phoneNo, SMS; @Override p
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
您可以设置edittextandroid:inputType=“number”
的输入类型。因此,您可以只输入数字,然后使用TextUtils.isEmpty(string)
来验证。“phoneNo.length()==0&&phoneNo==null”您的意思是“||”?此代码可以替换为“TextUtils.isEmpty(phoneNo)”“@lassana,哎呀,我是说!”null@Vigbyor,您应该首先检查null:if(phoneNo!=null&&phoneNo.length()=0)