Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我尝试设置clickListener时,应用程序崩溃_Java_Android_Button_Multidimensional Array_Onclicklistener - Fatal编程技术网

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

Java 当我尝试设置clickListener时,应用程序崩溃,java,android,button,multidimensional-array,onclicklistener,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); f

每次我在模拟器上运行此应用程序时,当我点击“播放”按钮时,该应用程序就会崩溃:

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);
}
}
公共类PixelCheckActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u pixel\u check);
最终按钮播放=(按钮)findViewById(R.id.play);
//…此处定义了40个b,例如:最终按钮b1=(按钮)findViewById(R.id.b1);
最终按钮[][]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=新视图。OnClickListener(){
@凌驾
公共void onClick(视图){
setContentView(R.layout.pixel\u tap\u游戏);
final View.OnClickListener=new View.OnClickListener(){
@凌驾
public void onClick(视图){View.setBackgroundColor(Color.RED);}
};

对于(int i=0;i如果40个按钮位于不同的布局中,如果它们不在您在活动中扩展的布局中(
R.layout.activity\u pixel\u check
),则无法通过
findViewById
方法获取引用。
findViewById
将返回视图引用(如果该视图引用位于活动的布局中),或者null(如果不在其中)。因此,在调用
arr[0][i]时,将有40个null引用数组。setOnClickListener(listener)
你肯定会遇到NullPointerException

你能给我们提供更多详细信息吗?发布你的日志或相关信息。可能是按钮播放为null。请提供更多详细信息。请共享崩溃日志。你是否初始化了arr[][]按钮?我会尽快。我现在似乎无法运行应用程序(Gradle sync错误),但是日志猫说了一些关于“空指针”的事情。但是问题已经解决了。谢谢你的时间!:)那么我需要在点击按钮后初始化40个按钮吗?如果需要,如何?在setContentView(R.layout.pixel\u tap\u game)之后初始化按钮。但是我建议您使用两个活动,一个带有播放按钮,另一个带有40个按钮,更改活动的布局不是正常的android编程。将内容写入listener1 onClick:startActivity(新意图(PixelCheckAcivity.this,ButtonsActivity.class)),其中Button活动将是另一个具有layout R.layout.pixel_tap_Game的活动感谢您的帮助。我不知道它是否有效(由于gradle文件同步错误),但根据Logcat错误,我得到的解决方案应该有效:)谢谢!