Белый экран в TextView - PullRequest
       4

Белый экран в TextView

1 голос
/ 02 июля 2019

Я очень новичок в Android.Я хотел бы напечатать это в TextView, но экран весь белый, и я не могу видеть содержимое TextView.В консоли работает нормально.Ниже приведен файл моей деятельности и макета.

public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

 Fruits();


}

public void Fruits() {

    textView= findViewById(R.id.pa);


    String[] fruit = {"orange", "apple", "pear", "bannana", "strawberry", "mango","grape","lemon"};
    Random numberGenerator = new Random();
    /* Generate A Random Number */
    int nextRandom = numberGenerator.nextInt(fruit.length)
    ;
    Set<Integer> validate = new HashSet<>();
    /* Add First Randomly Genrated Number To Set */
    validate.add(nextRandom);
    for (int i = 0; i < fruit.length; i++) {
        /* Generate Randoms Till You Find A Unique Random Number */
        while(validate.contains(nextRandom)) {
            nextRandom = numberGenerator.nextInt(fruit.length);
        }
        /* Add Newly Found Random Number To Validate */
        validate.add(nextRandom);
        System.out.println(fruit[nextRandom]);
        textView.setText(fruit[nextRandom]);


    }


}
}

макет

      <TextView
        android:id="@+id/pa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

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

добавить дополнительную проверку размера заданного цикла while:

 for (int i = 0; i < fruit.length; i++) {
            /* Generate Randoms Till You Find A Unique Random Number */
            while(validate.size() != fruit.length && validate.contains(nextRandom)) {
                nextRandom = numberGenerator.nextInt(fruit.length);
            }
            /* Add Newly Found Random Number To Validate */
            validate.add(nextRandom);
           Log.i("HELLO",fruit[nextRandom]);
            textView.setText(fruit[nextRandom]);
        }

Приведенный выше текст напечатает случайно выбранный фрукт и пропустит его после завершения проверки.

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

0 голосов
/ 02 июля 2019

Цикл while будет повторяться вечно. Когда i равно fruit.length-1, validate хранит числа в диапазоне [0, fruit.length), это приводит к тому, что условие в цикле while всегда имеет значение true, и программа не может выйти из цикла, так как nextNumber вы сгенерировали внутри цикл while всегда в диапазоне [0, fruit.length). Для простоты предположим, что массив fruit имеет только один элемент.

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