2016-10-12 2 views
1

В методе onFinish таймера, который у меня есть, я хочу, чтобы у пользователя была добавлена ​​точка для их оценки, если их вход равен случайному числу (LoadG1). IDE хочет, чтобы я использовал массив и забил до финала. Я следовал его советам по устранению ошибок, но не смог достичь своей цели. Я потратил время, пытаясь закодировать его по-разному (например: using parseInt и ==), но получил тот же результат. Я не понимаю, чего я ожидаю, и вместо этого получаю «Оценка: [l @ fea28db».Ошибка счетчика счетчика в Android Studio

public void onFinish() { 
        number.setVisibility(View.GONE); 
        final TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setText(" Enter the number"); 
        final EditText input = (EditText) findViewById(R.id.enterAnswer); 
        input.setVisibility(View.VISIBLE); 
        input.setOnKeyListener(new View.OnKeyListener() { 
         @Override 
         public boolean onKey(View v, int keyCode, KeyEvent event) { 
         if (event.getAction() == KeyEvent.ACTION_DOWN){ 
          switch (keyCode){ 
           case KeyEvent.KEYCODE_ENTER: 
            Editable answer = input.getText(); 
            input.setVisibility(View.GONE); 
            prompt.setVisibility(View.GONE); 
            if (answer.equals(loadG1)){ 
             score[0]++; 
            } 
            return true; 
           default: 
            break; 
          } 
         } 
          return false; 
         } 
        }); 
       } 

Вот где выход оценка:

public void onFinish() { 
        TextView result = (TextView) findViewById(R.id.outcome); 
        result.setText("Score: "+ score); 
        TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setVisibility(View.GONE); 
       } 

Я также пытался делать score=score+1 и score+=1, с не разница в выходе. Я бы очень признателен за любую помощь.

ответ

0

Если score - это массив, вам, вероятно, нужно разыменовать его, похоже, что сейчас вы печатаете массив toString(), который не является тем значением, которое вы действительно ищете.

Попробуйте сделать вместо этого result.setText("Score: " + score[0]);.

IDE, вероятно, предложил использовать последний массив, потому что вы передаете локальную переменную в анонимный внутренний класс, но захотелось изменить ее значение и отслеживать позже. Об этом подробно рассказано здесь: Why are only final variables accessible in anonymous class? (ответ Иван Дубров особенно важен).

+0

Это помогло, мне пришлось использовать parseInt (String.valueof) и == для оценки, чтобы действительно подняться. По сути, они должны были быть преобразованы в целые числа для добавляемой точки. Ваше предложение о возврате массива в конце концов избавилось от странной выходной ошибки и дало мне 0. Спасибо за ответ. – User44

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