0
public void updateDisplay(View v)
{
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            tempNumber.setText(tempNumber.getText().toString() + ((Button) view).getText());
        }
    });

    tempNumber.setText( tempNumber.getText().toString() + ((Button) v).getText() );
}


    <Button
        android:id="@+id/button1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:onClick="updateDisplay"
        android:text="1"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:onClick="updateDisplay"
        android:text="2"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button3"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:onClick="updateDisplay"
        android:text="3"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:onClick="updateDisplay"
        android:text="4"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button5"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="5"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button6"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="6"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button7"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:padding="0sp"
        android:text="7"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button8"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="8"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button9"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="9"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button0"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="0"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/buttonDot"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="."
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

    <Button
        android:id="@+id/buttonM"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:onClick="updateDisplay"
        android:layout_weight="0.1"
        android:background="@drawable/button"
        android:text="-"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:textColor="@drawable/button_tx_color"
        android:textSize="15sp" />

ボタンのクリック時に数字を更新して作成するコードの小さな平和があります。すべて正常に動作しますが、浮動小数点数と負数の検証を行いたいと考えています。

エラー: 12.343.325.4

正: 12.343 (2 番目のドットを書いてはいけません)

エラー 12-324-45

正解 -1234

tempNumber は、結果を表示する TextView であり、それ以上のものはありません。

4

1 に答える 1

1

間違った値を防ぐために onClick メソッドにもう少しコードを追加するのと同じくらい簡単に思えるので、あなたが求めていることを理解したかどうかはわかりません。何かのようなもの:

new View.OnClickListener() {

    private boolean dotPresent;

    public void onClick(View view) {
        String buttonText = ((Button)view).getText().toString();
        boolean isDot = buttonText.equals(".");
        boolean isSign = buttonText.equals("-");
        int currentLength = tempNumber.getText().length();

        if (isSign && currentLength != 0) return;
        if (isDot && dotPresent) return;

        tempNumber.setText(tempNumber.getText().toString() + buttonText);

        if (isDot) dotPresent = true;
    }
}

前のクラスは一度だけ作成し、setOnClickListener() を使用して各ボタンに割り当てる必要があります。

ところで、別の可能性として、inputType TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL | TYPE_NUMBER_FLAG_SIGNED。次に、ソフト キーボードはユーザーに数値キーボードを提示する必要があり、間違った値を防ぐためのフィルターも存在します。Android ドキュメントの詳細:
http://developer.android.com/reference/android/text/InputType.html#TYPE_NUMBER_FLAG_DECIMAL

于 2013-04-02T19:05:24.960 に答える