Кнопка, не пропускающая точку «.» в качестве строки для объекта EditText

#java #android #android-studio

#java #Android #android-studio

Вопрос:

Итак, я начинаю с разработки Android, и у меня проблема, с которой я не могу разобраться. Я создаю калькулятор, очевидно, использующий ряд кнопок. Я могу заставить другие кнопки размещать свои соответствующие номера в EditText просто отлично, но точка / точка просто не будут отображаться, даже если они почти идентичны почти во всех отношениях и связаны таким же образом в коде Java. Мой код приведен ниже: я показал XML для кнопки с номером 9, а затем десятичную кнопку, чтобы показать их сходство

 <Button
    android:id="@ id/button9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:minWidth="48dp"
    android:text="9"
    app:layout_constraintBaseline_toBaselineOf="@ id/button8"
    app:layout_constraintStart_toEndOf="@ id/button8" />

<Button
    android:id="@ id/buttonDot"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:minWidth="48dp"
    android:text="."
    app:layout_constraintBaseline_toBaselineOf="@ id/button0"
    app:layout_constraintStart_toEndOf="@ id/button0" />
 

И Java для их инициализации и использования выглядит следующим образом

 private EditText newNumber;
private EditText baseNumber;
private TextView operation;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        baseNumber = (EditText) findViewById(R.id.baseNumber);
        newNumber = (EditText) findViewById(R.id.newNumber);
        operation = (TextView) findViewById(R.id.operation);

        Button button9 = (Button) findViewById(R.id.button9);
        Button buttonDot = (Button) findViewById(R.id.buttonDot);

        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Button b = (Button) v;
                newNumber.append(b.getText().toString());
            }
        };

        button9.setOnClickListener(listener);
        buttonDot.setOnClickListener(listener);
 

Я убрал много других кнопок, чтобы не иметь обширного списка. Просто показываю кнопку, которая, кажется, работает — button9, и ту, которая не работает — buttonDot, несмотря на то, что она создана и инициализирована почти одинаково.

Большое спасибо

Ответ №1:

Добавьте это в свой EditText в xml:

 android:inputType="numberSigned|number|numberDecimal"
 

Если в нем нет numberDecimal, то он не позволит вам вводить десятичные числа.