0

簡単なプロセスを実行しています

ユーザーが EditText に数値を入力し、ラジオ ボタンを選択してから計算を押すだけです。ラジオ ボタンは if ステートメントに接続されており、このステートメントは、EditText に表示されている数値を置き換えて返される float に向けられます。ただし、数値を入力する前に計算ボタンを押すと、数値形式の例外が発生し、アプリがクラッシュするようです。

今のところ、これが発生する可能性を減らすために EditText にデフォルト値を入力しますが、if ステートメントなどを使用して例外をすべて回避する方法があるかどうか疑問に思っていました。

ここにいくつかのサンプルコードがあります

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

import com.admob.android.ads.AdManager;
import com.admob.android.ads.AdView;
import com.medialets.android.analytics.MMAnalyticsManager;

public class Area extends Activity {
    private EditText text9;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.area);
            text9 = (EditText)findViewById(R.id.EditText09);

    public void myClickHandler09(View view){
switch (view.getId()) {
case R.id.Button09:
    RadioButton SeveralRadioButtons = (RadioButton) findViewById (R.id.RadioButton901);
    float inputValue = Float.parseFloat(text9.getText().toString());
    String checkValue = String.valueOf(inputValue);

    if (checkValue.equals("")){
        text9.setText(String.valueOf(""));
   } else {

     if (SeveralRadioButtons.isChecked())  {
            text9.setText(String
                    .valueOf(conversionfactor(inputValue)));
   }
       break;
}}}

private double conversionfactor(float f){
        return f * 6.4516;
    }

(SeveralRadioButtons) が呼び出される場所には、実際にはいくつかのラジオ ボタンと、それぞれに if ステートメントとプライベート double があります。

ご覧のとおり、問題の修正を既に試みましたが、数値形式の例外が引き続き表示されます。

4

3 に答える 3

0

nullと値をチェックするための他の提案に従うだけでなく、エラーケースを""キャッチして処理することもできます。NumberFormatException計算を中止して、エラーメッセージを表示する可能性があります。

例外がスローされた場合に処理するということは、見逃した他のエッジケースがある場合、ユーザーが完全なアプリケーションクラッシュを経験しないことを意味します。

于 2011-02-26T23:35:33.430 に答える
0

ボタンの onClickListener で、実際に数値を送信先に送信する前に、文字列が null または "" かどうかをチェックする if ステートメントを記述できます...

于 2011-02-26T22:47:48.970 に答える
0

null (最初に!) または空の文字列をチェックする変換の周りに if ステートメントを配置します。デフォルト値は、テキスト ボックスに空の文字列が入力されるまで機能します。

于 2011-02-26T22:45:21.533 に答える