我没有在按钮上看到任何文字,即使
System.out.println("test");
有效
爪哇:
public void buttonClicked(View v) {
TextView button = (Button) v;
if (button.getText().equals("")) {
System.out.println("test");
button.setText("test");
System.out.println(button.getText());
button.setText(Objects.equals(currentPlayer, PLAYER_X) ? "X" : "O");
button.setTextColor(Objects.equals(currentPlayer, PLAYER_X) ? Color.GREEN : Color.RED);
xml:
<Button
android:id="@+id/btn1"
app:backgroundTint="#3CFF0000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="77dp"
android:layout_marginEnd="35dp"
android:onClick="buttonClicked"
android:tag="0,0"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn2"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="77dp"
android:layout_marginEnd="31dp"
android:onClick="buttonClicked"
android:tag="0,1"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn3"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="77dp"
android:layout_marginEnd="16dp"
android:onClick="buttonClicked"
android:tag="0,2"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
android:layout_marginEnd="34dp"
android:onClick="buttonClicked"
android:tag="1,0"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn5"
app:layout_constraintTop_toBottomOf="@+id/btn1" />
<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
android:layout_marginEnd="31dp"
android:onClick="buttonClicked"
android:tag="1,1"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn6"
app:layout_constraintTop_toBottomOf="@+id/btn2" />
<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
android:layout_marginEnd="16dp"
android:onClick="buttonClicked"
android:outlineAmbientShadowColor="#000000"
android:outlineSpotShadowColor="#000000"
android:shadowColor="#000000"
android:tag="1,2"
android:textColor="#000000"
android:textColorHighlight="#000000"
android:textColorHint="#000000"
android:textColorLink="#000000"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn3"
app:rippleColor="#000000"
app:strokeColor="#000000" />
<Button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginEnd="34dp"
android:onClick="buttonClicked"
android:tag="2,0"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn8"
app:layout_constraintTop_toBottomOf="@+id/btn4" />
<Button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginEnd="31dp"
android:onClick="buttonClicked"
android:tag="2,1"
android:textSize="60sp"
app:layout_constraintEnd_toStartOf="@+id/btn9"
app:layout_constraintTop_toBottomOf="@+id/btn5" />
<Button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginEnd="16dp"
android:onClick="buttonClicked"
android:outlineSpotShadowColor="#000000"
android:tag="2,2"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn6" />
我尝试在声明按钮后将文本设置为一行,这行得通,但在这个监听器中它不起作用
在您的代码中,您两次设置按钮的文本:
button.setText("test");
button.setText(Objects.equals(currentPlayer, PLAYER_X) ? "X" : "O");
在第二行中,您将根据 currentPlayer 的值设置文本。因此,如果 currentPlayer 是“X”或“O”,按钮文本将分别设置为“X”或“O”。如果删除第一行 (button.setText("test");),按钮文本应根据 currentPlayer 的值设置,您应该能够看到按钮上的文本。