我创建了一个Android应用程序,可以节省两个团队的得分。两队都有按钮给他们1分,2分或3分。还有一个重置按钮,可以将两队的得分重置为0.看起来像这样。
当我点击重置(两队都有0分)时没有任何反应,但是当我点击一个应该为球队添加分数的按钮时,应用程序会崩溃。
首先,我定义了团队的分数(当然在全球范围内)。
int teamAScore = 0;
int teamBScore = 0;
然后我写了为分数添加分数的方法。例如,为A队增加3分。
private void addTeamA3(View view){
teamAScore += 3;
updateA(teamAScore);
}
updateA()
方法会刷新A队的分数。
private void updateA(int score){
TextView ascore = (TextView) findViewById(R.id.textView3);
ascore.setText(score);
}
但正是在这里,应用程序崩溃了。当我尝试向团队添加积分时,它会崩溃。但是当我重置积分时(两个得分均为0)没有任何反应。
private void reset(View view){
teamAScore = 0;
teamBScore = 0;
updateA(teamAScore);
updateB(teamBScore);
}
问题可能是NullPointerException,我不确定,但我希望你可以帮助我。我还是Android编程的新手。
Java代码:
package com.example.android.justjava;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
int teamAScore = 0;
int teamBScore = 0;
private void addTeamA3(View view){
teamAScore += 3;
updateA(teamAScore);
}
private void addTeamA2(View view){
teamAScore += 2;
updateA(teamAScore);
}
private void addTeamAFreeThrow(View view){
teamAScore++;
updateA(teamAScore);
}
private void addTeamB3(View view){
teamBScore += 3;
updateB(teamAScore);
}
private void addTeamB2(View view){
teamBScore += 2;
updateB(teamBScore);
}
private void addTeamBFreeThrow(View view){
teamBScore++;
updateB(teamBScore);
}
private void reset(View view){
teamAScore = 0;
teamBScore = 0;
updateA(teamAScore);
updateB(teamBScore);
}
private void updateA(int score){
TextView ascore = (TextView) findViewById(R.id.textView3);
ascore.setText(score);
}
private void updateB(int score){
TextView bscore = (TextView) findViewById(R.id.textView4);
bscore.setText(score);
}
}
XML代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="com.example.android.justjava.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="59dp"
android:layout_marginTop="16dp"
android:text="Team A"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Team B"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginRight="59dp"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="60sp"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView"
android:layout_marginLeft="65dp"
app:layout_constraintLeft_toLeftOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="60sp"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView2"
android:layout_marginRight="65dp"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:id="@+id/button4"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="+3 POINTS"
android:layout_marginLeft="28dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView3"
android:onClick="addTeamA3"/>
<Button
android:id="@+id/button5"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="+2 POINTS"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/button4"
android:layout_marginLeft="28dp"
app:layout_constraintLeft_toLeftOf="parent"
android:onClick="addTeamA2"/>
<Button
android:id="@+id/button6"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="Free throw"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/button5"
android:layout_marginLeft="28dp"
app:layout_constraintLeft_toLeftOf="parent"
android:onClick="addTeamAFreeThrow"/>
<Button
android:id="@+id/button7"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="+3 POINTS"
android:layout_marginRight="28dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView4"
android:onClick="addTeamB3"/>
<Button
android:id="@+id/button10"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="+2 POINTS"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/button7"
android:layout_marginRight="28dp"
app:layout_constraintRight_toRightOf="parent"
android:onClick="addTeamB2"/>
<Button
android:id="@+id/button11"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="Free throw"
android:layout_marginRight="28dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/button10"
android:onClick="addTeamBFreeThrow"/>
<Button
android:id="@+id/button12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="57dp" />
答案 0 :(得分:1)
更改从私人到公共的方法访问
public void addTeamA3(View view){
teamAScore += 3;
updateA(teamAScore);
}
public void addTeamA2(View view){
teamAScore += 2;
updateA(teamAScore);
}
public void addTeamAFreeThrow(View view){
teamAScore++;
updateA(teamAScore);
}
public void addTeamB3(View view){
teamBScore += 3;
updateB(teamBScore);// teamBScore
}
public void addTeamB2(View view){
teamBScore += 2;
updateB(teamBScore);
}
public void addTeamBFreeThrow(View view){
teamBScore++;
updateB(teamBScore);
}
public void reset(View view){
teamAScore = 0;
teamBScore = 0;
updateA(teamAScore);
updateB(teamBScore);
}
正如其他人提到的那样,将得分的整数值更改为字符串
A队
ascore.setText(Integer.toString(score));
B队
bscore.setText(Integer.toString(score));
并且您忘记从xml调用reset方法,将以下内容添加到重置按钮
android:onClick="reset"
答案 1 :(得分:0)
问题是,ascore.setText(score)
将整数传递给setText方法。 setText(int)方法查找具有给定id的资源。您需要将您的点解析为String。请尝试使用ascore.setText(Integer.toString(score))