我的代码由一个XML网格视图组成,其中64个图像视图以棋盘图案排列。我的java应该监视那些带有实际图像的那些imageViews的点击,然后执行提供的代码。
然而,在运行时,我的模拟器向我提供了一个对话框,说“不幸的是,棋盘停止工作”,而logcat正在抛出NullPointerException,如下所示:java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference
我不确定null的生成位置。我知道我正在检查null,但我不知道这是如何产生错误的。
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class chessboard extends ActionBarActivity {
public Activity board;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.board);
final ImageView block2 = (ImageView) board.findViewById(R.id.block2);
block2.setClickable(true);
block2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (block2.getTag() != (null)) {
Toast.makeText(getBaseContext(), "Check", Toast.LENGTH_LONG).show();
}
}
});
}
答案 0 :(得分:0)
当您在findViewById
变量上致电board
时,board
为null
。
如果更改此行
final ImageView block2 = (ImageView) board.findViewById(R.id.block2);
到这个
final ImageView block2 = (ImageView) findViewById(R.id.block2);
你不会得到NullPointerException
。
此外,不需要此代码
public Activity board;
由于您通过致电setContentView
来扩充您的布局,并且可以直接从您的Activity