2014-01-24 136 views
2

我正在做一個短信應用..其中我想驗證編輯文本(即如果用戶不會輸入電話號碼,那麼它會顯示請輸入號碼),但它沒有執行那些部分..請檢查它並給我一些建議....我的代碼是在這裏。謝謝提前..如何驗證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(); 
     } 

    } 


} 
+3

您可以設置edittext'android:inputType =「number」'的輸入類型。所以你只能輸入數字,而你使用'TextUtils.isEmpty(string)'來驗證。 – Raghunandan

回答

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

'phoneNo.length()== 0 && phoneNo == null'您的意思是'||'嗎? 此代碼可以替換爲'TextUtils.isEmpty(phoneNo)' –

+0

@lassana,opps我的意思是!= null – Vigbyor

+0

@Vigbyor,你應該首先檢查null:if(phoneNo!= null && phoneNo.length()== 0) – Melquiades

1

要做到這一點沒有必要採取字符串和編輯文本的內容傳遞到字符串。您可以通過以下代碼直接檢查。

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

您正在使用下面的代碼來確定用戶是否輸入任何東西 -

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

首先,當用戶保持EditText空,這將是一個0長度的字符串「」,而不是一個空間「」,你正在測試。

其次,你爲什麼要檢查null?您的佈局是否可能沒有EditText字段?而且,如果可能的話,應該首先檢查null檢查。因爲,如果它可以是null那麼你的應用程序肯定會崩潰,因爲你在null檢查之前測試equals()對象null對象!

1

如果你想嘗試更多的東西,不要點擊按鈕檢查驗證。 與前就做:TextWatcher

您的活動實現android.text.TextWatcher接口 您添加框TextChanged聽衆對你的EditText框

txt1.addTextChangedListener(this); 

重寫的方法,你可以使用afterTextChanged(編輯S)方法如下:

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

你可以直接檢查的EditText上框中的內容類似

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

謝謝..現在工作 – user3197707

+0

歡迎大家幫忙 –