0

基本的に、私はアンドロイド開発を始めたばかりで、YouTube のチュートリアルからアプリを構築していました。私は少し離れて、私が望むようにすることにしましたが、今はエラーが発生しています。

私がやろうとしているのは、EditText がこのカウンター アプリケーションの増分量を決定できるようにすることです。これが私のコードです:

Java アクティビティ:

        counter = 0;
        reset = (Button) findViewById(R.id.reset);
        addone = (Button) findViewById(R.id.add);
        takeOne = (Button) findViewById(R.id.take);
        tvCounter = (TextView) findViewById(R.id.fullscreen_content);
        incrementer = (EditText) findViewById(R.id.number);

        final int increment = Integer.parseInt(incrementer.getText().toString());

        addone.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter += increment;
                tvCounter.setText("" + counter);
            }
        });

        takeOne.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter -= increment;
                tvCounter.setText("" + counter);
            }
        });

        reset.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter = 0;
                tvCounter.setText("" + counter);
            }

XML:

       <Button
            android:id="@+id/add"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Add One" />
        <Button
            android:id="@+id/take"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Take One" />

        <Button
            android:id="@+id/reset"
            style="?buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Reset" />
    </LinearLayout>

    <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>
4

3 に答える 3

1
02-17 09:35:56.313: E/AndroidRuntime(3177): Caused by: java.lang.NumberFormatException: Invalid int: ""
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.invalidInt(Integer.java:138)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.parseInt(Integer.java:359)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at java.lang.Integer.parseInt(Integer.java:332)
02-17 09:35:56.313: E/AndroidRuntime(3177):     at 

それはエラーであり、この行で発見された可能性があります

final int increment = Integer.parseInt(incrementer.getText().toString());

デフォルト値を設定することをお勧めしますEditText

 <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:ems="10"
        android:text="0" 
        android:inputType="number" >
于 2013-02-17T01:37:36.473 に答える
0

EditText の内容が数値ではないため、おそらくクラッシュします。これが onCreate メソッドであると仮定すると、この時点で edittext を読み取る必要はありません。カウンターを更新する前に、ボタンの onClick メソッドで edittext の内容を解析します。

また、ユーザーが入力するテキストの種類がわからないため、EditText に数値が含まれていない場合にアプリがクラッシュしないように、parseInt 呼び出しを try と catch で囲む必要があります。

android:text="1"xml ファイルの EditText に追加します。

于 2013-02-17T01:29:36.050 に答える
0

空の EditText を取得し、"" から parseInt を実行しようとすると、Integer.parseInt("") メソッドから NumberFormatException が返されます。

例外をキャッチして処理するには、try/catch を使用するだけです。

final int increment;
try {
    increment = Integer.parseInt();
} catch (NumberFormatException e) {
    // Do what you want
}
于 2013-02-17T02:45:27.787 に答える