java - 当我尝试设置 clickListener 时,应用程序崩溃

标签 java android button multidimensional-array onclicklistener

每次我在我的模拟器上运行这个应用程序时,当我点击播放按钮时应用程序崩溃:

public class PixelCheckActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pixel_check);
    final Button play = (Button) findViewById(R.id.play);
    // ...40 b's defined here ex: final Button b1 = (Button) findViewById(R.id.b1);
    final Button[][] arr = {
            {b1,b2,b3,b4,b5},
            {b6,b7,b8,b9,b10},
            {b11,b12,b13,b14,b15},
            {b16,b17,b18,b19,b20},
            {b21,b22,b23,b24,b25},
            {b26,b27,b28,b29,b30},
            {b31,b32,b33,b34,b35},
            {b36,b37,b38,b39,b40}
    };
    final View.OnClickListener listener1 = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setContentView(R.layout.pixel_tap_game);
            final View.OnClickListener listener = new View.OnClickListener() {
                @Override
                public void onClick(View view){view.setBackgroundColor(Color.RED);}
            };
            for(int i=0;i<=4;i++){arr[0][i].setOnClickListener(listener);}
        }
    };
    play.setOnClickListener(listener1);
}
}

我认为问题在于,40 b 位于与播放按钮不同的布局文件中。 那么,我需要做什么才能解决这个问题?

这是 Logcat 崩溃日志: http://i.imgur.com/bCoa7jL.png

最佳答案

如果这 40 个按钮处于不同的布局中,如果它们不在您在 Activity 中膨胀的布局中 (R.layout.activity_pixel_check),那么您无法通过 findViewById 方法。 findViewById 将返回 View 引用如果它在 Activity 的布局中,或者如果不在则返回 null。所以你会有一个包含 40 个空引用的数组,当你调用 arr[0][i].setOnClickListener(listener) 时你肯定会得到一个 NullPointerException

关于java - 当我尝试设置 clickListener 时,应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26701154/

相关文章:

java - 如何更改 Android 按钮颜色 onClick?

java - 打印语句,间距问题。

java - 如何在 bean 验证上下文中设置默认组

java - 通过拖动在 libGDX 中真实地旋转 3D 模型

android - Google Play 开发者更改本国货币

jquery - 如何在上传时禁用页面上的所有按钮?

java - 外部化 DEFAULT 配置属性

java.io.IOException : Permission denied with Xuggle

android - 如何找到 View 的颜色

delphi - 如何制作带有透明图形的firemonkey按钮,并使其成为默认样式