Android 文本视图中的白色屏幕

Android 文本视图中的白色屏幕,android,textview,Android,Textview,我是Android的初学者。我想在TextView中打印这个,但是屏幕是白色的,我看不到TextView的内容。控制台中的控制面板工作正常。下面是我的活动和布局文件 public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

我是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]);


    }


}
}
public类MainActivity扩展了AppCompatActivity{
文本视图文本视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
水果();
}
公众利益{
textView=findviewbyd(R.id.pa);
字符串[]水果={“橙色”、“苹果”、“梨”、“班纳纳”、“草莓”、“芒果”、“葡萄”、“柠檬”};
随机数生成器=新随机数();
/*生成一个随机数*/
int-nextRandom=numberGenerator.nextInt(fruit.length)
;
Set validate=新的HashSet();
/*将第一个随机生成的数字添加到集合中*/
validate.add(nextRandom);
for(int i=0;i
布局

      <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" />

while循环将永远重复。
i
equal
fruit.length-1
validate
已将数字存储在范围[0,fruit.length]中时,它导致while循环中的条件始终为true,程序无法取出循环,因为while循环中生成的下一个数字始终在范围内[0,fruit.length)。为了更简单,让我们设想
fruit
数组只有一个元素。

while循环将永远重复。
i
equal
fruit.length-1
validate
已将数字存储在范围[0,fruit.length]中时,它导致while循环中的条件始终为true,程序无法取出循环,因为while循环中生成的下一个数字始终在范围内[0,fruit.length)。为了更简单,让我们假设
fruit
数组只有一个元素。

您的while循环是一个无限循环,因为验证集在一个点上包含所有8个值,并且始终为true。因此,您的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]);
        }
for(int i=0;i
上面将打印随机采摘的水果,并在验证已满时跳过


注意:我添加了一个设置大小的附加检查(仅作为示例),您可以添加断点,在此断点上您必须退出循环。

您的while循环是一个无限循环,因为验证集将在一个点上包含所有8个值,并且始终为true。因此,您的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]);
        }
for(int i=0;i
上面将打印随机采摘的水果,并在验证已满时跳过


注意:我添加了一个设置大小的附加检查(仅作为示例),您可以添加断点,您必须在断点上跳出循环。

您好,您可以显示activity_主xml文件吗?@Sz Nika Janos确实要全部打印吗?您的代码只显示一个随机文本,最后添加到集合中。因为您只有一个
TextView
,它的值每次都会更改,而不是追加。我不知道uld只想显示一个元素似乎你进入了无限循环。不是吗?我想你应该在循环的所有逻辑之后在循环中获得
nextRandom
。嗨,你能显示活动的主xml文件吗?@Sz Nika Janos确实要打印它们吗?你的代码只显示一个随机文本,最后添加到集合中。因为您只有一个
TextView
,它的值每次都会更改,而不是追加。我只想显示一个元素。您似乎进入了无限循环。不是吗?我想在所有循环的逻辑之后,您应该在循环中获得
nextRandom