我正在处理的应用程序中的所有文本都存储在FireStore文档中,因此要检索它,我使用以下代码
db.collection("language").document("kCreateNewAccount").get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
String viewText = lan.equals("en") ? documentSnapshot.getString("en")
: documentSnapshot.getString("es");
createAccount.setText(viewText);
}
});
我试图将其放入一个以文档名称为参数并返回相应字符串的函数中,以免一遍又一遍地写同一件事,无济于事,欢迎任何帮助
答案 0 :(得分:1)
Firebase查询是异步的,您必须使用回调函数。
创建回调接口
public interface OnCompleteListener {
void onComplete(String text);
}
创建用于通过文档名称提取文本的方法
public void getText(String document, final OnCompleteListener onCompleteListener) {
db.collection("language").document(document).get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
String viewText = lan.equals("en") ? documentSnapshot.getString("en")
: documentSnapshot.getString("es");
onCompleteListener.onComplete(viewText);
}
});
}
使用您的文档名称并指定一个侦听器来调用该方法
getText("kCreateNewAccount", new OnCompleteListener() {
@Override
public void onComplete(String text) {
createAccount.setText(text);
}
});