Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 setOnClickListener打开按钮-程序崩溃_Java_Android - Fatal编程技术网

Java setOnClickListener打开按钮-程序崩溃

Java setOnClickListener打开按钮-程序崩溃,java,android,Java,Android,我正在为android开发一款游戏,目前我正在做程序的菜单部分。 但是我有一个小问题 如果我向程序添加setOnClickListener,程序将崩溃 <!-- language: lang-java --> public class MakeLoveMenu extends Activity { /* 0 = New 1 = Load 2 = Statistics 3 = Exit */ Button[] buttons; protected void o

我正在为android开发一款游戏,目前我正在做程序的菜单部分。 但是我有一个小问题

如果我向程序添加
setOnClickListener
,程序将崩溃

<!-- language: lang-java -->
public class MakeLoveMenu extends Activity {
    /* 0 = New 1 = Load 2 = Statistics 3 = Exit */
    Button[] buttons;

    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_make_love_menu);

        buttonListeners();
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.make_love_menu, menu);
        return true;
    }

    public void buttonListeners() {
        buttons[0] = (Button) findViewById(R.id.button_StartNewGame);
        buttons[1] = (Button) findViewById(R.id.button_ContinueGame);
        buttons[2] = (Button) findViewById(R.id.button_Stats);
        buttons[3] = (Button) findViewById(R.id.button_Exit);

        buttons[0].setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
                System.exit(0);
            }
        });

        buttons[1].setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
                System.exit(0);
            }
        });

        buttons[2].setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
                System.exit(0);
            }
        });

        buttons[3].setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
                System.exit(0);
            }
        });
    }
}

公共类MakeLoveMenu扩展活动{
/*0=新建1=加载2=统计3=退出*/
按钮[]按钮;
创建时受保护的void(Bundle savedInstanceState){
requestWindowFeature(窗口。功能\u无\u标题);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u make\u love\u菜单);
按钮侦听器();
}
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(右菜单、做爱菜单、菜单);
返回true;
}
public void按钮侦听器(){
按钮[0]=(按钮)findViewById(R.id.Button\u StartNewName);
按钮[1]=(按钮)findViewById(R.id.Button\u ContinueGame);
按钮[2]=(按钮)findViewById(R.id.Button_Stats);
按钮[3]=(按钮)findViewById(R.id.Button\u Exit);
按钮[0]。setOnClickListener(新建OnClickListener(){
公共void onClick(视图v){
完成();
系统出口(0);
}
});
按钮[1]。setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
完成();
系统出口(0);
}
});
按钮[2]。setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
完成();
系统出口(0);
}
});
按钮[3]。setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
完成();
系统出口(0);
}
});
}
}
你能找到错误吗?也许阵列处理有问题?
谢谢你的回答

根据您的代码,
Button[]buttons
从未实例化,因此,您需要类似以下内容:

Button[] buttons = new Button[4];

您无法访问不存在的数组位置,因为在您的方法
buttonListeners()
中,您正在考虑是否存在4个位置(0到3),您需要在访问之前创建它们。

基于您的代码,
Button[]buttons
从未实例化过,因此,您需要以下内容:

Button[] buttons = new Button[4];

您无法访问不存在的数组位置,因为在您的方法
buttonListeners()
中,您考虑存在4个位置(0到3),您需要在访问之前创建它们。

什么类型的崩溃?您是否有任何错误消息要发布?包括相关的logcat数据,显示例外情况是代码的第一行部分(XML注释)?如果没有logcat或相关的XML,就无法判断错误是什么。永远不要使用
系统。退出(0)
。这与Android编码实践背道而驰。仅使用
finish()?您是否有任何错误消息要发布?包括相关的logcat数据,显示例外情况是代码的第一行部分(XML注释)?如果没有logcat或相关的XML,就无法判断错误是什么。永远不要使用
系统。退出(0)
。这与Android编码实践背道而驰。仅使用
finish()
结束活动非常感谢您的帮助。非常感谢您的帮助。