2013-06-17 1 views
0

Я разрабатываю игру для Android, и в настоящее время я занимаюсь частью меню программы. Но у меня есть небольшая проблема.setOnClickListener on Button - сбой программы

Если я добавлю программу 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); 
      } 
     }); 
    } 
} 

У вас есть ошибки? Может быть, проблема с обработкой массива? Спасибо за ваш ответ!

+0

Какая авария? У вас есть сообщение об ошибке для публикации? – Simon

+0

Включить соответствующие данные logcat, указывающие на исключение –

+0

, это первая часть вашего кода (комментарий XML)? – Phil

ответ

4

на основе кода, Button[] buttons никогда не инстанцирован, поэтому вам нужно будет что-то вроде:

Button[] buttons = new Button[4]; 

Вы не можете получить доступ к позиции массива, который не существует, так как в методе buttonListeners() вы учитывая существование 4-х позиций (от 0 до 3), вам необходимо создать их перед доступом.

+0

Большое спасибо за вашу помощь. – werck