Java setOnClickListener打开按钮-程序崩溃
我正在为android开发一款游戏,目前我正在做程序的菜单部分。 但是我有一个小问题 如果我向程序添加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
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()
结束活动非常感谢您的帮助。非常感谢您的帮助。