2012-03-06 3 views
0

Я получаю сообщение об ошибке при попытке реализовать onClickListener, это ошибка: 03-06 19: 21: 20.432: E/AndroidRuntime (1197): Caused by: java.lang .NullPointerException 03-06 19: 21: 20,432: Е/AndroidRuntime (+1197): в com.coursework.braintrain.Game.Easy12 (Game.java:186)реализация кнопок onClickListener в методе

и это линия, которая вызывает это: buttonhash.setOnClickListener (новый OnClickListener() {

В основном я создал кнопку buttonhash в методе onCreate(), но я хочу сделать так, чтобы при нажатии кнопки он прослушивал, соответствует ли вход пользователя фактическому ответу уравнение. если я просто поставить код на это будет иметь больше смысла (не очень хорошо объяснить ...)

public class Game extends Activity { 
private static final String TAG = "Brain Training"; 

public static final String KEY_DIFFICULTY = "com.coursework.braintrain.difficulty"; 
public static final int DIFFICULTY_EASY = 0; 
public static final int DIFFICULTY_MEDIUM = 1; 
public static final int DIFFICULTY_HARD = 2; 
public static final int DIFFICULTY_GURU = 3; 


private int brain; 

private EditText edittext; 
private Button button1; 
private Button button2; 
private Button button3; 
private Button button4; 
private Button button5; 
private Button button6; 
private Button button7; 
private Button button8; 
private Button button9; 
private Button button0; 

private TextView answerLabel; 

private Button buttonhash; 



@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "onCreate"); 
    setContentView(R.layout.gamelayout); 

    int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY); 
    getGame(diff); 


    edittext = (EditText) findViewById(R.id.USERentry); 

    answerLabel = (TextView) findViewById(R.id.rightwrong_label); 

    button1 = (Button) findViewById(R.id.keypad_1); 
    button1.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      // Perform action on clicks 
      //String buttonText = (String) button.getText(); 
      edittext.setText(edittext.getText() + "1"); 
      //edittext.setText() = edittext.getText() + "1"; 
     } 
    }); 

    button2 = (Button) findViewById(R.id.keypad_2); 
    button2.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "2"); 
     } 
    }); 

    button3 = (Button) findViewById(R.id.keypad_3); 
    button3.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "3"); 
     } 
    }); 

    button4 = (Button) findViewById(R.id.keypad_4); 
    button4.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "4"); 
     } 
    }); 

    button5 = (Button) findViewById(R.id.keypad_5); 
    button5.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "5"); 
     } 
    }); 

    button6 = (Button) findViewById(R.id.keypad_6); 
    button6.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "6"); 
     } 
    }); 

    button7 = (Button) findViewById(R.id.keypad_7); 
    button7.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "7"); 
     } 
    }); 

    button8 = (Button) findViewById(R.id.keypad_8); 
    button8.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "8"); 
     } 
    }); 

    button9 = (Button) findViewById(R.id.keypad_9); 
    button9.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "9"); 
     } 
    }); 

    button0 = (Button) findViewById(R.id.keypad_0); 
    button0.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 

      edittext.setText(edittext.getText() + "0"); 
     } 
    }); 

    buttonhash = (Button) findViewById(R.id.keypad_hash); 


    //final Button buttonDel = (Button) findViewById(R.id.keypad_del); 
    //buttonDel.setOnClickListener(new OnClickListener(){ 
     //public void onClick(View v){ 
      //edittext.setText(edittext.getText() - 1); 

     //} 
    //}); 
} 

частное аннулируются getGame (интермедиат дифф) {

//TODO: Continue last game 
    switch(diff){ 
    case DIFFICULTY_HARD: 

     break; 
    case DIFFICULTY_MEDIUM: 

     break; 
    case DIFFICULTY_EASY: 
     Easy12(); 
     break; 
    } 
    //might require to return an array or something 

} 

public void Easy12(){ 
    Random rand = new Random(); 
    int a = (int) rand.nextInt(100)+1; 
    int b = (int) rand.nextInt(100)+1; 
    final TextView tv = (TextView) findViewById(R.id.question_label); 
    String aString = Integer.toString(a); 
    String bString = Integer.toString(b); 
    String display = aString + " + " + bString + " ="; 
    tv.setText(display); 
    final int c = a + b; 
    buttonhash.setOnClickListener(new OnClickListener(){ //HERE IS THE ERROR!! 

     public void onClick(View v) { 

      if(edittext.getText().toString().equals(String.valueOf(c))){ 

       answerLabel.setText(R.string.answer_correct); 
       answerLabel.setTextColor(R.color.correct_color); 
       //answerLabel.setBackgroundColor(R.color.background_answer); 
      } 
      else 
      { 

       answerLabel.setText(R.string.answer_wrong); 
       answerLabel.setTextColor(R.color.wrong_color); 
       //answerLabel.setBackgroundColor(R.color.background_answer); 
      } 
     } 
    }); 

} 

}

Мои XML - это хорошо, если это одна из вещей, которые могут быть причиной этого, но я не думаю, что это имеет какое-либо отношение к этому в любом случае: P

Так что моя проблема заключается в получении ошибки nullpointerexception в строке, где я устанавливаю свою кнопку buttonhash о nClickListener, который находится в другом методе (Easy12()). Любая помощь в том, что может быть причиной этого/как его исправить, будет высоко оценена. Спасибо

+0

вы могли бы дать больше сообщение об ошибке , я думаю, что линия прекрасна. – simaremare

ответ

1

Вы вызываете getGame(), прежде чем определять свою кнопку, поэтому она равна нулю. Поместите объявление кнопку выше getGame так:

buttonhash = (Button) findViewById(R.id.keypad_hash); 
getGame(diff) 
+0

Спасибо, что исправили ошибку :) – a7omiton

0

Если это сбой на этой строке, то кнопка не имеет значения. По какой-то причине он не устанавливается/не найден, когда вы вызываете findViewById в Oncreate. Убедитесь, что идентификаторы совпадают с идентификаторами в xml.

Убедитесь, что вы также вызвали getGame после его инициализации.

0

изменения buttonhash.setOnClickListener (новый OnClickListener() для

buttonhash.setOnClickListener (новый Veiw.OnClickListener()

Смежные вопросы