2

EditText、Button、および TextView を含むアクティビティがあります。数値を入力してボタンをクリックすると、TextView に計算結果が表示されます。

EditText が空の場合 (数字が入力されていない場合)、ボタンをクリックすると、「アプリケーションが予期せず停止しました。もう一度やり直してください」というダイアログが表示されます。

私を助けてください。ユーザーが数字を書かない場合、いくつかのコメント (「数字を挿入」など) を含むウィンドウを表示したいと考えています。EditText フィールドはどのようにプログラミングすればよいですか? これを解決するには?どうもありがとう

これは私の onClick メソッドです:

public void onClick(View v) {
    EditText numA  = (EditText)findViewById(R.id.editText1);
    TextView wynik1 = (TextView)findViewById(R.id.wynik);

    float num1 = Float.parseFloat(numA.getText().toString());

    float eq1 = 0;

    if(num1>0){ 
        switch (v.getId()) {
                case R.id.oblicz:
                    eq1 = 2*num1;
                break;
        }

        wynik1.setText(String.format("%f", eq1));   
    }
    else {
        Intent o = new Intent(this, Obliczokno.class);
        startActivity(o);
    }
}

onClick メソッドを変更しました:

public void onClick(View v) {
    EditText numA  = (EditText)findViewById(R.id.editText1);

    float num2 = Float.parseFloat(numA.getText().toString());
    float eq1 = 0;
    float eq2 = 0;  

    try{  float num1 = Float.parseFloat(numA.getText().toString());

            if(num1>0 || num2>0){   

                switch (v.getId()) {
                case R.id.pole:
                    eq1 = 2*num1 ;

                break;  

                case R.id.obwod:
                    eq2 = 3*num1 ;

                break;  

                }}

                else {Intent o = new Intent(this, Obliczokno.class);
                startActivity(o);}
        }
         catch (NumberFormatException e) {
           Toast.makeText(this, "Sorry you did't type anything", Toast.LENGTH_SHORT).show();

           return;
        }

エラーがあります。私の LogCat エラー:

E/AndroidRuntime(321): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(321): java.lang.NumberFormatException:
E/AndroidRuntime(321):  at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:296)
E/AndroidRuntime(321):  at java.lang.Float.parseFloat(Float.java:327)

E/AndroidRuntime(321):  at arek.geometria.Oblicz.onClick(Oblicz.java:35)

E/AndroidRuntime(321):  at android.view.View.performClick(View.java:2344)

E/AndroidRuntime(321):  at android.view.View.onTouchEvent(View.java:4133)

E/AndroidRuntime(321):  at android.widget.TextView.onTouchEvent(TextView.java:6510)

E/AndroidRuntime(321):  at android.view.View.dispatchTouchEvent(View.java:3672)

E/AndroidRuntime(321):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)

E/AndroidRuntime(321):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)

E/AndroidRuntime(321):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)

E/AndroidRuntime(321):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)

E/AndroidRuntime(321):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)

E/AndroidRuntime(321):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)

E/AndroidRuntime(321):  at android.app.Activity.dispatchTouchEvent(Activity.java:1987)

E/AndroidRuntime(321):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)

E/AndroidRuntime(321):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)

E/AndroidRuntime(321):  at android.os.Handler.dispatchMessage(Handler.java:99)

E/AndroidRuntime(321):  at android.os.Looper.loop(Looper.java:123)

E/AndroidRuntime(321):  at android.app.ActivityThread.main(ActivityThread.java:4203)

E/AndroidRuntime(321):  at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime(321):  at java.lang.reflect.Method.invoke(Method.java:521)

E/AndroidRuntime(321):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)

E/AndroidRuntime(321):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)

E/AndroidRuntime(321):  at dalvik.system.NativeStart.main(Native Method)

if ... else は正しく機能します。何かアイデアはありますか?私を助けてください。

4

3 に答える 3

1

ユーザーが入力した内容を確認するだけです。

String input = editText.getText().toString();

if(input == null || input.trim().equals("")){
      Toast.makeText(context, "Sorry you did't type anything"), Toast.LENGTH_SHORT).show();
}

編集

フロートがある場合は、フロートを解析する前にチェックを行う必要があります。

String input = editText.getText().toString();

if(input == null || input.trim().equals("")){
      // Toast message
      return;
}
float num1 = Float.parseFloat(input);

また

try{

   float num1 = Float.parseFloat(numA.getText().toString());

} catch (NumberFormatException e) {
   // Toast message - you cannot get a float from that input
   return;
}
于 2012-07-08T14:13:03.250 に答える
0

EditText が空でないことを確認する必要があります。次のようなものを使用してみてください:

EditText editText = (EditText) findViewById(R.id.edittext);
String text = editText.getText().toString();
if (text == null || text.equals("")) {
    Toast.makeText(this, "You did not enter a number", Toast.LENGTH_SHORT).show();
    return;
}
于 2012-07-08T14:12:33.833 に答える
0

ものすごく単純。計算を開始する前に、次のコードを呼び出す必要があります。

if (editText.getText().length() > 0) {
    // do the calculations
}

このようにして、あなたの中に何かがあるかどうかがわかりますEditText。空の場合は、ユーザーを助けるためにAlertDialogまたはを表示できます。Toastお役に立てれば。

于 2012-07-08T14:15:00.713 に答える