Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for循环返回空,单击时不显示任何内容_Java_Android_Arrays_Firebase_Google Cloud Firestore - Fatal编程技术网

Java for循环返回空,单击时不显示任何内容

Java for循环返回空,单击时不显示任何内容,java,android,arrays,firebase,google-cloud-firestore,Java,Android,Arrays,Firebase,Google Cloud Firestore,[ 当我运行程序并单击按钮时,它意味着从我的数组中选择一个随机索引并显示内容。当随机数等到达for循环时,它将不从数组中检索任何数据 我已经在谷歌上搜索了一段时间,只是在尝试不同的东西时把自己弄糊涂了。对不起,我对java和android studio非常陌生 public void onClick(View view) { txtDisplay = findViewById ( R.id.textViewDisplay ); int color = cCo

[

当我运行程序并单击按钮时,它意味着从我的数组中选择一个随机索引并显示内容。当随机数等到达for循环时,它将不从数组中检索任何数据

我已经在谷歌上搜索了一段时间,只是在尝试不同的东西时把自己弄糊涂了。对不起,我对java和android studio非常陌生


 public void onClick(View view) {

        txtDisplay = findViewById ( R.id.textViewDisplay );
        int color = cColorWheel.getColor ();
        txtDisplay.setBackgroundColor ( color );
        //=========================================
        Random rn = new Random ();
        int RN = rn.nextInt ( 14 );
        //========================================================
        FactRef.whereArrayContains ( "facts", RN ).get ()
                .addOnSuccessListener ( new OnSuccessListener<QuerySnapshot> () {

                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        StringBuilder data = new StringBuilder ();
                        for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                            Fact note = documentSnapshot.toObject ( Fact.Class );
                            note.setDocumentId ( documentSnapshot.getId () );

                            String documentId = note.getDocumentId ();


                            data.append ( "Id:" ).append ( documentId );
                            for (String tag : note.getTags ()) {
                                data.append ( "\n-" ).append ( tag );
                            }
                            data.append ( "\n\n" );
                        }
                        txtDisplay.setText ( data.toString () );


                    }
                } );
    }


公共void onClick(视图){
txtDisplay=findviewbyd(R.id.textViewDisplay);
int color=cColorWheel.getColor();
txtDisplay.setBackgroundColor(颜色);
//=========================================
Random rn=新的Random();
int RN=RN.nextInt(14);
//========================================================
FactRef.whererraycontains(“facts”,RN).get()
.addOnSuccessListener(新的OnSuccessListener(){
成功时公共无效(QuerySnapshot QueryDocumentSnapshot){
StringBuilder数据=新的StringBuilder();
用于(QueryDocumentSnapshot文档快照:QueryDocumentSnapshot){
事实注释=documentSnapshot.toObject(事实类);
note.setDocumentId(documentSnapshot.getId());
字符串documentId=note.getDocumentId();
data.append(“Id:”).append(documentId);
for(字符串标记:note.getTags()){
data.append(“\n-”).append(标记);
}
data.append(“\n\n”);
}
txtDisplay.setText(data.toString());
}
} );
}

如果您使用以下代码行,将非常感谢您的帮助:

Random rn = new Random();
int RN = rn.nextInt(14);
FactRef.whereArrayContains("facts", RN).get().addOnSuccessListener(/* ... */);
若要基于等于0到14之间的数字的索引从
事实
数组中返回一个随机项,请不要认为这是不可能的。您无法使用
whererraycontains()查询
RNDFacts
集合
基于特定索引。该方法正在搜索与其自身相同的项目。例如,如果要在数组中搜索:

超人并不总是飞

这是您应该使用的查询:

String fact = "Superman Didn't Always Fly";
FactRef.whereArrayContains("facts", fact).get().addOnSuccessListener(/* ... */);
如果要从
facts
数组中获取随机项,应获取整个文档,并使用以下行:

List<String> facts = (List<String> facts) document.get(facts);
Random rn = new Random();
int RN = rn.nextInt(facts.size());
String fact = facts.get(RN);
List facts=(List facts)document.get(facts);
Random rn=新的Random();
int RN=RN.nextInt(facts.size());
字符串fact=facts.get(RN);

您可以显示一个您认为应该选择的示例文档吗?另外:您可以尝试使用硬编码值而不是
RN
?我建议尝试一个数字(例如
4
)和与字符串相同的数字(
“4”
)。好的,随时通知我。试试看,告诉我它是否有效。好的,我想我在这件事上迷路了。对不起-
FactRef
应该是
CollectionReference
而不是
DocumentReference
。你应该取消对
文档(“事实”)的调用
。它是这样工作的吗?出于某种原因,括号中列出的事实仍然保留着,我不确定我是如何做到的,但我已经做到了,并且代码显示了随机事实:)非常感谢您的帮助,因为它给了我惊人的帮助;)