0

私は最初のAndroidアプリを書き込もうとしています。EditTextフィールドにユーザーが入力した数値を受け取り、それを整数に変換してから、因子を見つけます。以前に書いたJavaプログラムからこれを移植したいと思います。UIを使用できるようになるまでスタブが機能していますが、要素を見つけるコードをまだ移植していません。EditTextを整数に変換しようとして立ち往生しています。次のいずれかの行を挿入すると、プログラムがエミュレータでクラッシュします。Log.Catは、「NumberFormatExcepionが原因:''を整数として解析できません」と述べています。

任意の提案をいただければ幸いです。

userNumberは、EditTextフィールドから取得した値の名前であり、EditTextフィールドにもuserNumberという名前が付けられています。それが悪い形かどうかはわかりません。userNumberの値を整数値userIntに割り当てたい。次に、userIntが因数分解されます。

これらのアプローチのいずれかが問題を引き起こします:

userNumber = (EditText) findViewById(R.id.userNumber);
userInt = Integer.parseInt(userNumber.getText().toString());


Integer userInt = new Integer(userNumber.getText().toString());

XMLのEditTextブロックは次のようになります。

<EditText
    android:id="@+id/userNumber"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="number" >

    <requestFocus />
</EditText>

クラスの関連コードは次のとおりです。

public class AndroidFactoringActivity extends Activity {

// Instance Variables
EditText userNumber;
Button factorButton;
TextView resultsField;
int factorResults = 1;
int userInt = 0;  // This comes out if using Integer userInt

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    resultsField = (TextView) findViewById(R.id.resultsField);
    factorButton = (Button) findViewById(R.id.factorButton);
    userNumber = (EditText) findViewById(R.id.userNumber); 
                // userNumber is also the name of the EditText field.

    // userInt = Integer.parseInt(userNumber.getText().toString());

    // Integer userInt = new Integer(userNumber.getText().toString());

    resultsField.append("\n" + String.valueOf(userInt)); 
               //Later, this will be factorResults, not userInt.
               // Right now, I just want it to put something on the screen.      

}   
} 
4

1 に答える 1

3

メソッド内のintを解析しようとしています。onCreateこれは、ユーザーがに何かを入力する前に発生しますEditText。したがって、空の文字列を解析しようとすることからの例外。

押すボタンを作成して、からintを解析するか、何かが入力されたときに解析するEditTextリスナーをにアタッチする必要があります。EditText

于 2012-10-29T03:12:05.727 に答える