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