Для цикла не заканчивается - Android - PullRequest
0 голосов
/ 07 марта 2012

Я не знаю, почему, но мой цикл for не остановится, когда достигнет истинного значения оператора завершения.

for(int i = 1; i < 11; i++){
             edittext.setText("");
             EasyGame();
             //if(i==10){
                 //Game.this.finish();

             //}
         }

EasyGame () - арифметический метод, просто складывает два числа вместе. Я попытался использовать оператор if, показанный выше, но он все равно ничего бы не сделал, и если бы он это сделал, он вызвал finish () после первого вопроса!

Если кто-то будет добр, помогите мне, я буду благодарен.

EDIT:

public void EasyGame(){
    Random rand = new Random();
    final int a = (int) rand.nextInt(20)+1;
    final int b = (int) rand.nextInt(20)+1;
    String aString = Integer.toString(a);
    String bString = Integer.toString(b);
    String display = aString + " + " + bString + " =";
    questionLabel.setText(display);
    c = a + b;


        }

что цикл for находится внутри switch / case, который имеет дело с onClick () для кнопок

Ответы [ 5 ]

1 голос
/ 07 марта 2012

Очень сложно сказать, не видя больше кода, но то, что вы опубликовали в одиночку, по своей сути ошибочно, потому что вы пытаетесь постоянно обновлять элемент пользовательского интерфейса в цикле.Если этот цикл выполняется в потоке пользовательского интерфейса, то система не сможет перерисовать какие-либо элементы пользовательского интерфейса, такие как edittext, до тех пор, пока цикл (и все, что содержит метод обратного вызова) не завершится.

Поэтому, когда вы говорите "Я пытался использовать оператор if, показанный выше, но он все равно ничего не делал, и если бы он это делал, он вызвал finish () после первого вопроса!"1005 * Я предполагаю, что вы верите, что цикл повторяется только один раз, потому что вы когда-либо видите, как edittext отображает то, что было передано в последнем вызове .setText().

0 голосов
/ 07 марта 2012

Я согласен с Тревором Пейджем и попытаюсь уточнить:

Ваш код, если он выполняется при обратном вызове в потоке пользовательского интерфейса, может вызывать сам себя, создавая обратный вызов при очистке первого textView или изменении второго.

Кроме того, что вы подразумеваете под «это не остановит»? Я не совсем понимаю, что вы пытаетесь сделать здесь, поскольку вы в 10 раз удаляете содержимое textView и в 10 раз заменяете содержимое другого.

0 голосов
/ 07 марта 2012

Цикл, вероятно, выполняется только один раз, а затем он останавливается бесконечным циклом в EasyGame ().

Примечание: не используйте начальные заглавные буквы для методов, это сбивает с толку.

0 голосов
/ 07 марта 2012

В отсутствие предоставленного кода, я предполагаю, что ваш неопределенный цикл происходит внутри метода EasyGame ()

0 голосов
/ 07 марта 2012

Я не вижу ничего плохого в этом коде.Единственная возможная проблема заключается в том, что ваш счетчик где-то уменьшается (например, внутри EasyGame ();), или проблема в другом месте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...