2012-10-21 186 views
1

我創建了一個帶有TextEdit的對話框作爲數字輸入以將其轉換爲雙精度值。 我想通過檢查來防止異常,如果TextEdit輸入爲空,但它總是跳轉到else語句,並因此在EditText爲空時創建異常。AlertDialog EditText輸入驗證不起作用

final Builder builder = new Builder(this); 
      final EditText input = new EditText(this); 
      input.setKeyListener(DigitsKeyListener.getInstance(false, true)); 
      builder 
       .setTitle(R.string.dialog_title_addmark) 
       .setMessage(R.string.dialog_addmark) 
       .setView(input) 
       .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 

        public void onClick(DialogInterface dialog, int which) { 
         if (input.toString().trim().length() == 0) { 

          Toast.makeText(Marks.this, R.string.input_empty, Toast.LENGTH_SHORT).show(); 

         } else { 
          Double value = Double.valueOf(input.getText().toString()); 
          db.insertMark(selection, value); 
          getData(); 
         } 
        } 
       }) 
       .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 

        public void onClick(DialogInterface dialog, int which) { 
        } 

       }) 
       .show(); 

我也試了一下檢查 (input.toString()!= NULL) 但這並不工作。

感謝您的幫助

回答

1

如果你想從一個EditText對象的文本,你應該使用下面的代碼行:

input.getText().tostring(); 

inputEditText -object。

使用代碼

input.toString(); 

會給你對象的字符串表示,只要對象不是null,該對象的的toString會不會null,所以使用input.toString() != null不會放棄你有任何有用的信息。

這意味着,你應該做到以下幾點驗證:

if (input.getText().toString().trim().length() == 0)弄清楚如果輸入對象包含一些文本。

+0

對我而言真是一個失敗...感謝您的解決方案 – BlueHazard

0

嘗試這種方式..

     if (input.toString().trim().length()< 0) { 

          Toast.makeText(Marks.this, R.string.input_empty, Toast.LENGTH_SHORT).show(); 

         } else { 
          Double value = Double.valueOf(input.getText().toString()); 
          db.insertMark(selection, value); 
          getData(); 
         } 
0

input.toString()將返回Edittext的參考值,而不是Edittext中的文本。

以下條件使用

if(input.getText().toString() != null || !input.getText().toString().isEmpty())