Java 当我尝试设置TextView时,应用程序崩溃
我有一个我命名的课程记分板,看起来像这样:Java 当我尝试设置TextView时,应用程序崩溃,java,android,Java,Android,我有一个我命名的课程记分板,看起来像这样: public class Scoreboard { private int mScore = 0; private int mHighScore = 0; public void addPoint() { mScore += 1; } public int getHighScore() { return mHighScore; } public void setHighScore(int highScore) { mHig
public class Scoreboard {
private int mScore = 0;
private int mHighScore = 0;
public void addPoint() {
mScore += 1;
}
public int getHighScore() {
return mHighScore;
}
public void setHighScore(int highScore) {
mHighScore = highScore;
}
public int getScore() {
return mScore;
}
public void setScore(int score) {
mScore = score;
}
}
我的Activity中有一段代码,每当用户将球穿过矩形的间隙并相应地更改TextView以向用户显示分数时,它都会操纵这个类:
//Keeps track of score
if (rectWhite1.getTheRight() > Math.round(mBallPos.x) - 5 && rectWhite1.getTheRight() < Math.round(mBallPos.x) + 5) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mScoreboard.addPoint();
scoreTextView.setText(mScoreboard.getScore());
}
});
Log.d(TAG, "If statement has been run3333!!!");
}
if (rectWhite2.getTheRight() > Math.round(mBallPos.x) - 5 && rectWhite2.getTheRight() < Math.round(mBallPos.x) + 5) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mScoreboard.addPoint();
scoreTextView.setText(mScoreboard.getScore());
}
});
Log.d(TAG, "If statement has been run2222!!!");
}
if (rectWhite3.getTheRight() > Math.round(mBallPos.x) - 5 && rectWhite3.getTheRight() < Math.round(mBallPos.x) + 5) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mScoreboard.addPoint();
scoreTextView.setText(mScoreboard.getScore());
}
});
Log.d(TAG, "If statement has been run1111!!!");
}
//记录分数
if(rectwite1.getTheRight()>Math.round(mBallPos.x)-5&&rectwite1.getTheRight()Math.round(mBallPos.x)-5&&rectwite2.getTheRight()Math.round(mBallPos.x)-5&&rectwite3.getTheRight()
每次我运行应用程序时,每当我尝试使用与我创建的Scoreboard类相关的任何方法时,它都会崩溃。当我尝试添加一个点时,它会崩溃,当我尝试获取当前分数时,它会崩溃,等等。所以我的问题是如何避免这种情况发生并动态更改分数?我想这取决于logcat崩溃时的输出。但是我会确保你已经正确初始化了mScoreboard,我还没有初始化mScoreboard……我试着将它设置为null,但是没有用,那就是你的问题。您需要类似于
Scoreboard mScoreBoard=newscoreboard()的东西
否则您试图在空对象上执行操作
@codeMagic好的,我像您说的那样初始化了mScoreboard,我的应用程序仍然崩溃……可能是我正在向setText方法传递一个整数,还是我正在UI线程上运行?是的,这肯定会成功。看这里