0

私は新しい。私は2つのeditTextと1つのTextView、1つのボタンを持っています。2つの入力から合計したい。すべてのeditTextを入力すると成功です。でも、入力しないとアプリが止まってしまいました。

package panda.c;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;




public class calculate extends Activity implements OnClickListener {
/** Called when the activity is first created. */

EditText input1,input2;
Button sum;
TextView total;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.calcu);

input1 = (EditText) findViewById(R.id.input1);
input2 = (EditText) findViewById(R.id.input2);
total = (EditText) findViewById(R.id.total);
sum = (Button) findViewById(R.id.sum);
sum.setOnClickListener(this);

}

public void onClick(View v) {

int inputt1 = Integer.parseInt(input1.getText().toString());
int inputt2 = Integer.parseInt(input2.getText().toString());

switch (v.getId()) {                    
case R.id.sum:

sum.setText(Integer.toString(inputt1+inputt2));

break;
default:
break;
}}}

何も入力していません。合計をクリックしただけで、プログラムが停止しました。しかし、すべての editText を入力すると、sum をクリックしました。なぜ?入力せずに合計をクリックしても、アプリケーションは実行されます。

4

4 に答える 4

2

と呼ばれNullPointerExceptionます。に解析しようとしていnullますinteger。解析ステートメントをtryブロックで囲みcatchNullPointerExceptionいくつかのデフォルト値をinputt1andに設定し、inputt2またはToast.

修正

じゃないNullPointerExceptionですNumberFormatException

于 2013-05-19T07:51:36.410 に答える
2

フィールドを空白のままにすると、Integer.parseInt() が失敗するためです。フィールドが空白のままになっている場合は、デフォルト値を 0 に設定して、強制的に閉じないようにする必要があります。

空かどうかを確認し、デフォルトとして 0 を使用する簡単なソリューションを次に示します。

int inputt1 = input1.getText().toString().equals("") ? 0 : Integer.parseInt(input1.getText().toString());
int inputt2 = input2.getText().toString().equals("") ? 0 : Integer.parseInt(input2.getText().toString());

また、android:inputType="number"your に設定すると、EditText入力が数字のみに制限されます。

編集: すべての API レベルに対応するようにコードを更新しました。

于 2013-05-19T07:51:39.297 に答える
1

これは、内部で使用Integer.parseInt()および解析しているためです。""これにより、間違いなく NumberFormat Exception が発生します。

これを試して...

if(!(input1.getText().toString().trim().equals(""))){
inputt1 = Integer.parseInt(input1.getText().toString());
}

他の入力についても同じです..

お役に立てれば、..

于 2013-05-19T07:52:35.037 に答える