1

ボタンがクリックされたときに表示されるメッセージを取得して、ユーザーに空白のフィールドに入力するように指示しようとしています。現在、フィールドが空白の場合、アプリがクラッシュ/強制終了します。次のコードを実行しようとしましたが、成功しませんでした。元々、if / elseはありませんでしたが、calculator()を実行しただけです。メソッドと次のimmコード。

誰かが私を正しい方向に向けることができますか?

  public void onClick(View  v) 
  { 
     if ((EditText)findViewById(R.id.amount1)== null)
     {
          Context context = getApplicationContext();
          CharSequence text = "Enter a number";
          int duration = Toast.LENGTH_SHORT;

          Toast toast = Toast.makeText(context, text, duration);
          toast.show();
     }
     else
     {
      calculator();
      InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
     }
  }

これが悪いコードだと確信しています。

if ((EditText)findViewById(R.id.amount1)== null)

私が望むようにそれを表現する方法がわからない。

4

6 に答える 6

5

EditTextウィジェットでテキストの長さを確認してみてください

EditText e = (EditText)findViewById(R.id.amount1));
if(e.getText().length == 0){
//Show Toast
}else{
//continue your code
}
于 2011-05-17T21:14:24.150 に答える
2

このコードを使用してください。

EditText et = (EditText)findViewById(R.id.amount1));

if(et1.getText().length() == 0){
    //Display toast here
} else{
    //Your code
}
于 2012-10-01T11:09:30.413 に答える
0
EditText text = (EditText)findViewById(R.id.amount1);

if(TextUtils.isEmpty(text.toString())) {
    // show toast
}
于 2011-05-17T21:00:32.660 に答える
0

EditTextの内容がnullであるか、空の文字列であるかを実際に確認する必要があります。

問題の行は次のようになります。

if("".equals(((EditText)findViewById(R.id.amount1)).getText().toString()))

もちろん、そのステートメントをもう少し読みやすくするために、より多くの行に分割することもできます。

于 2011-05-17T21:02:17.617 に答える
0

フィールドが空白の場合でも、edittextはnullではありません。使用する:

EditText editText = (EditText)findViewById(R.id.amount1);
String text = new String(editText.getText());

if (test.equals("")) {
//...
于 2011-05-17T21:02:32.490 に答える
0

((EditText)findViewById(R.id.amount1)== nullIDを持つEditTextへの参照を取得しているだけで、amount1そのEditTextに有効なエントリがあるかどうかを確認していません。

EditTextにテキストがあるかどうかを確認するには、EditTextが保持する文字列を次の方法で取得できます。EditText#getText().toString()

これを機能させるには、最初にEditTextへの参照を変数に格納してから、文字列に対してチェックを実行します。

EditText et = (EditText)findViewById(R.id.amount1);
String amount1 = et.getText().toString();

if (amount1.equals("")) {
  // Do your stuff here
}

私はローカル変数を使用していて、文字列にコンテンツを含めることを想定しています。すべてのケースを処理するために、他のチェックを行う必要がある可能性があります(不正な入力など)。EditTextでinputTypeを設定することで、この一部を減らすことができます。たとえば、10進数のみを処理しようとしている場合は、numberDecimalに設定できます。

于 2011-05-17T21:11:52.533 に答える