2014-10-23 4 views
-1

Привет, вы помогаете парням, позвольте мне сказать вам, что я очень новичок в Android и Java. У меня есть файл OnClickHandler и он компилируется и запускается, но если я нажимаю одну кнопку, она останавливается.Приложение останавливается при нажатии кнопки

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    int[] buttons = {R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7, R.id.button8, R.id.button9}; 

    for (int i = 0; i < buttons.length; i++) { 
     Button buttonNum = (Button) this.findViewById(buttons[i]); 
     buttonNum.setOnClickListener(new onCklickHandler()); 
    } 
} 

class onCklickHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     if ("On" == button.getText()){ 
      button.setText("Off"); 
     } 
     else { 
      button.setText("On"); 
     } 
     v.playSoundEffect(SoundEffectConstants.CLICK); 
    } 
} 

Может ли кто-нибудь помочь?

+0

Опубликовать свой стек. Но, вероятно, NPE, так как я не вижу 'button', объявленного где-то – codeMagic

+2

Нам нужно содержимое logcat, пожалуйста. – BenjaminPaul

+0

Также должно быть 'button.getText(). ToString()' и '.equals()' является правильным способом сравнения строк в Java. 'if (" On ".equals (button.getText(). toString()) {'. См. [сравнение строк в Java] (http://stackoverflow.com/questions/19432553/if-edittext-gettext-tostring- dont-work/19432569 # 19432569) – codeMagic

ответ

-1

Я думаю, что переменная кнопка не определена

+0

Это не приведет к закрытию приложения, условное выражение просто сохранит метку «Вкл.». Проблема заключается в том, что кнопка не определена. – BenjaminPaul

0

Мой провал был, что Button.setText вызов не имел идентификатор, так что я должен был найти первый правильный идентификатор

 Button button = (Button) v.findViewById(v.getId()); 

То оно ...

Большое спасибо за это много сообщений и ваших ответов. Обработчик в настоящее время:

class onClickHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     Button button = (Button) v.findViewById(v.getId()); 
     if ("On" == button.getText()){ 
      button.setText("Off"); 
     } 
     else { 
      button.setText("On"); 
     } 
     v.playSoundEffect(SoundEffectConstants.CLICK); 
    } 
} 
Смежные вопросы