我已将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());
}
}
请帮助我。 ;)
答案 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;
}
}