调用OnClick函数时,java textView setText()和append()崩溃
我正在制作一个数独应用程序,我想添加一个移动计数器,这样我就有了一个文本视图,每当用户输入一个数字时,就会显示移动计数
public class NumberButton extends Button implements OnClickListener {
private int number;
TextView moveCountText;
private int moves;
private String message;
public NumberButton(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(this);
moveCountText = (TextView)findViewById(R.id.moveCountView);
}
@Override
public void onClick(View v){
moves++;
message="Move Count: "+ moves;
moveCountText.setText(message);
moveCountText.invalidate();
GameEngine.getInstance().setNumber(number);
}
public void setNumber(int number){
this.number = number;
}
}
问题是,setText说视图是空的(空对象),但我不知道为什么。下面是textView XML
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceMedium"
安卓:text="Move count: 0"
安卓:id="@+id/moveCountView"
安卓:layout_marginLeft="100dp"
安卓:layout_marginStart="114dp"
安卓:layout_marginTop="450dp"/>
我的胜利活动也是如此,错误在于意图是空对象
public void checkGame(){
int [][] sudGrid = new int[9][9];
for( int x = 0 ; x < 8 ; x++ ){
for( int y = 0 ; y < 8 ; y++ ){
sudGrid[x][y] = getItem(x,y).getValue();
}
}
if( SudokuChecker.getInstance().checkSudoku(sudGrid)){
Toast.makeText(context, "Congratulations!", Toast.LENGTH_LONG).show();
// opens victory screen
Intent nextScreen = new Intent(getApplicationContext(), VictoryActivity.class);
startActivity(nextScreen);
}
}
下面是错误消息
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at sudoku.view.buttonsgrid.NumberButton.onClick(NumberButton.java:33)
at 安卓.view.View.performClick(View.java:5156)
at 安卓.view.View$PerformClick.run(View.java:20755)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:145)
at 安卓.app.ActivityThread.main(ActivityThread.java:5832)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
还有XML
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceMedium"
安卓:text="Move count: 0"
安卓:id="@+id/moveCountView"
安卓:layout_marginLeft="100dp"
安卓:layout_marginStart="114dp"
安卓:layout_marginTop="450dp"/>
# 1 楼答案
每次设置文本时,moveCountText都为空
改变这个-
到-
并实现视图。OnClickListner 将为您工作:)