我想将单击按钮的文本添加到TextView,但是Buttons将先前单击的按钮文本添加到TextView

时间:2020-10-03 13:57:05

标签: android android-studio

我已将onClickListener添加到按钮,该按钮应将按钮文本添加到TextView。但是在单击按钮时,以前单击的按钮的文本将添加到文本中。 我尝试创建其他可行的应用程序,它正确添加了单击按钮的文本。 我是Android的新手。

尝试在此处构建计算器

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
        <Button
            android:id="@+id/ptButton"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="."
            android:textSize="30sp"
            app:layout_constraintStart_toEndOf="@+id/button0"
            app:layout_constraintTop_toBottomOf="@+id/button2" />

        <Button
            android:id="@+id/equalButton"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="="
            android:textSize="30sp"
            app:layout_constraintStart_toEndOf="@+id/ptButton"
            app:layout_constraintTop_toBottomOf="@+id/button3" />

        <Button
            android:id="@+id/button0"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="0"
            android:textSize="30sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/button1" />

        <TextView
            android:id="@+id/answerField"
            android:layout_width="400dp"
            android:layout_height="127dp"
            android:cursorVisible="true"
            android:duplicateParentState="false"
            android:editable="false"
            android:gravity="right"
            android:textSize="36sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.454"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.099" />

        <Button
            android:id="@+id/button7"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="7"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.02"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.39" />

        <Button
            android:id="@+id/button1"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="1"
            android:textSize="30sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/button4" />

        <Button
            android:id="@+id/button4"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="4"
            android:textSize="30sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/button7" />

        <Button
            android:id="@+id/button8"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="8"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.35"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.39" />

        <Button
            android:id="@+id/button9"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="9"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.685"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.39" />

        <Button
            android:id="@+id/button6"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="6"
            android:textSize="30sp"
            app:layout_constraintStart_toEndOf="@+id/button5"
            app:layout_constraintTop_toBottomOf="@+id/button9" />

        <Button
            android:id="@+id/button3"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="3"
            android:textSize="30sp"
            app:layout_constraintStart_toEndOf="@+id/button2"
            app:layout_constraintTop_toBottomOf="@+id/button6" />

        <Button
            android:id="@+id/button2"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="2"
            android:textSize="30sp"
            app:layout_constraintStart_toEndOf="@+id/button1"
            app:layout_constraintTop_toBottomOf="@+id/button5" />

        <Button
            android:id="@+id/button5"
            style="?attr/borderlessButtonStyle"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:background="@null"
            android:fadingEdge="horizontal|vertical"
            android:text="5"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toEndOf="@+id/button4"
            app:layout_constraintTop_toBottomOf="@+id/button8"
            app:layout_constraintVertical_bias="0.0" />

        <Button
            android:id="@+id/addButton"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:background="@android:color/transparent"
            android:text="+"
            android:textSize="24sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/clearButton" />

        <Button
            android:id="@+id/subButton"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:background="@android:color/transparent"
            android:text="*"
            android:textSize="24sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/addButton"
            tools:text="-" />

        <Button
            android:id="@+id/multButton"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:background="@android:color/transparent"
            android:text="*"
            android:textSize="24sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/subButton" />

        <Button
            android:id="@+id/divButton"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:background="@android:color/transparent"
            android:text="/"
            android:textSize="24sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/multButton" />

        <Button
            android:id="@+id/clearButton"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:background="@android:color/transparent"
            android:text="C"
            android:textSize="24sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.953"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.39" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java 我已经将actionListeners添加到所有按钮。

package com.advanced.calculator;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, addButton, subButton, multButton, divButton, equalButton, ptButton, clearButton;
    TextView answerField;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button0 = (Button) findViewById(R.id.button0);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        button4 = (Button) findViewById(R.id.button4);
        button5 = (Button) findViewById(R.id.button5);
        button6 = (Button) findViewById(R.id.button6);
        button7 = (Button) findViewById(R.id.button7);
        button8 = (Button) findViewById(R.id.button8);
        button9 = (Button) findViewById(R.id.button9);

        addButton = (Button) findViewById(R.id.addButton);
        subButton = (Button) findViewById(R.id.subButton);
        multButton = (Button) findViewById(R.id.multButton);
        divButton = (Button) findViewById(R.id.divButton);

        equalButton = (Button) findViewById(R.id.equalButton);
        ptButton = (Button) findViewById(R.id.ptButton);
        clearButton = (Button) findViewById(R.id.clearButton);

        answerField = (TextView) findViewById(R.id.answerField);

        clearButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                answerField.setText("");
            }
        });

        button0.setOnClickListener(this);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        button9.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Button b = (Button) v;
        answerField.append(b.getText());
    }
}

请帮助我。 ;)

1 个答案:

答案 0 :(得分:0)

为获得最佳方法,请尝试使用具有数据绑定的MVVM体系结构,该方法更快,更容易实现,只是一个建议; P ...

所以您的问题是,当您调用onClick方法时,您没有使用视图ID来验证视图。

尝试一下...

    @Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button1:
            Toast.makeText(this, "Button 1 clicked", Toast.LENGTH_SHORT).show();
            break;
        case R.id.button2:
            Toast.makeText(this, "Button 2 clicked", Toast.LENGTH_SHORT).show();
            break;
        case R.id.button3:
            Toast.makeText(this, "Button 3 clicked", Toast.LENGTH_SHORT).show();
            break;
        case R.id.button4:
            Toast.makeText(this, "Button 4 clicked", Toast.LENGTH_SHORT).show();
            break;
        case R.id.button5:
            Toast.makeText(this, "Button 5 clicked", Toast.LENGTH_SHORT).show();
            break;
    }
}