第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用全局變量從內(nèi)部函數(shù)獲取空字符串

使用全局變量從內(nèi)部函數(shù)獲取空字符串

RISEBY 2023-05-10 13:37:55
請(qǐng)幫我解決一些小問(wèn)題,我相信你能做到:D我正在嘗試在帶有字段“case_number”的 firestore 文檔“user_cases_information”上設(shè)置一個(gè)字段首先我聲明這個(gè)全局變量private String case_number_consecutive = new String("");在.setOnClickListener我有這個(gè):(從其他文件中讀取舊的連續(xù)或案例編號(hào))if (service_type.equals("support")){    DocumentReference docRef = firestore_popup.collection("param_data_app").document("support_case_numbers");    docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {     @Override     public void onComplete(@NonNull Task<DocumentSnapshot> task) {            if (task.isSuccessful()) {                 DocumentSnapshot document = task.getResult();                 String consecutive = document.get("consecutive").toString();                    if (consecutive.equals(null)) {                         int random = new Random().nextInt(117) + 4;                         case_number_consecutive = "IOC-09"+random;                    } else {                        case_number_consecutive = consecutive;                                        UpdateCaseNumbersConsecutive("support");                    }             } else {                  int random = new Random().nextInt(117) + 4;                  case_number_consecutive = "IOC-09"+random;              }      }     });} Map<String, Object> user_cases_information = new HashMap<>();user_cases_information.put("case_number", case_number_consecutive);... (then i use a firestore reference to put the new case number)它假設(shè)當(dāng)我檢查 firestore 時(shí),正是我設(shè)置“user_cases_information”文檔的文檔,我應(yīng)該看到數(shù)字或新的 case_number,但我總是得到一個(gè)參考,連續(xù)的字段總是null=null為什么我得到這個(gè)空值?我用了一個(gè) Toast 并把它放在這之前:Toast.makeText(...."Value: "+case_number_consecutiveMap<String, Object> user_cases_information = new HashMap<>();user_cases_information.put("case_number", case_number_consecutive);它顯示了null上述函數(shù)中的值或數(shù)據(jù)正在丟失我怎樣才能解決這個(gè)問(wèn)題???萬(wàn)分感謝。
查看完整描述

2 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

這樣做的原因是因?yàn)?firebase 是異步執(zhí)行的,而您在編碼時(shí)就好像這一切都是同步發(fā)生的一樣。這是什么意思 ?這意味著 firebase 調(diào)用不會(huì)立即從服務(wù)器返回值,獲取該值需要一些時(shí)間,但是在響應(yīng)返回之前您的其余代碼正在執(zhí)行,這就是您遇到問(wèn)題的原因。所以,即使這段代碼執(zhí)行:


if (service_type.equals("support")){

? ? DocumentReference docRef = firestore_popup.collection("param_data_app").document("support_case_numbers");

? ? docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {

? ? ?@Override

? ? ?public void onComplete(@NonNull Task<DocumentSnapshot> task) {

? ? ? ? ? ? if (task.isSuccessful()) {

? ? ? ? ? ? ? ? ?DocumentSnapshot document = task.getResult();

? ? ? ? ? ? ? ? ?String consecutive = document.get("consecutive").toString();

? ? ? ? ? ? ? ? ? ? if (consecutive.equals(null)) {

? ? ? ? ? ? ? ? ? ? ? ? ?int random = new Random().nextInt(117) + 4;

? ? ? ? ? ? ? ? ? ? ? ? ?case_number_consecutive = "IOC-09"+random;

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? case_number_consecutive = consecutive;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UpdateCaseNumbersConsecutive("support");

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ?} else {

? ? ? ? ? ? ? ? ? int random = new Random().nextInt(117) + 4;

? ? ? ? ? ? ? ? ? case_number_consecutive = "IOC-09"+random;

? ? ? ? ? ? ? }

? ? ? }

? ? ?});

}?

當(dāng)響應(yīng)返回時(shí),您的其他代碼:


Map<String, Object> user_cases_information = new HashMap<>();

user_cases_information.put("case_number", case_number_consecutive);

已經(jīng)完成并被調(diào)用,然后你永遠(yuǎn)不會(huì)從 firebase 獲得實(shí)際值。


這是你可以做的事情:


interface Callback{

? ? ? ? void firebaseResponseCallback(String result);//whatever your return type is.

? ? }

將此方法的簽名更改為如下所示:


public void getCaseNumber(Callback callback) {?

將您的代碼更改為此:


if (service_type.equals("support")){

? ? DocumentReference docRef = firestore_popup.collection("param_data_app").document("support_case_numbers");

? ? docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {

? ? ?@Override

? ? ?public void onComplete(@NonNull Task<DocumentSnapshot> task) {

? ? ? ? ? ? if (task.isSuccessful()) {

? ? ? ? ? ? ? ? ?DocumentSnapshot document = task.getResult();

? ? ? ? ? ? ? ? ?String consecutive = document.get("consecutive").toString();

? ? ? ? ? ? ? ? ? ? if (consecutive.equals(null)) {

? ? ? ? ? ? ? ? ? ? ? ? ?int random = new Random().nextInt(117) + 4;

? ? ? ? ? ? ? ? ? ? ? ? ?case_number_consecutive = "IOC-09"+random;

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? case_number_consecutive = consecutive;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UpdateCaseNumbersConsecutive("support");

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ?} else {

? ? ? ? ? ? ? ? ? int random = new Random().nextInt(117) + 4;

? ? ? ? ? ? ? ? ? case_number_consecutive = "IOC-09"+random;

? ? ? ? ? ? ? }


? ? ? ?callback.firebaseResponseCallback(case_number_consecutive);

? ? ? }

? ? ?});

}?

然后,當(dāng)你打電話時(shí)getCaseNumber:


getCaseNumber(new Callback() {

? ? ? ? @Override

? ? ? ? public void firebaseResponseCallback(String result) {

? ? ? ? ? ? here, this result parameter that comes through is your api call result to use, so result will be your case number, so make your objects inside this method, not outside

? ? ? ? }

? ? });

}


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

您在該代碼中犯了一個(gè)錯(cuò)誤。根據(jù) firebase 最新版本,您只能在 .addOnCompleteListener/.addValueEvent/etc 函數(shù)中使用 firebase 數(shù)據(jù)庫(kù)的值/字符串。


  DocumentReference docRef = firestore_popup.collection("param_data_app").document("support_case_numbers");

                                        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {

                                            @Override

                                            public void onComplete(@NonNull Task<DocumentSnapshot> task) {

                                                if (task.isSuccessful()) {


/////////////////////////////call here everything related to it////////////////////////


                                            }

                                        });

                                    } 

在 firebase 外部添加完整監(jiān)聽(tīng)器或添加值監(jiān)聽(tīng)器,變量或?qū)ο笾挡粫?huì)改變或保持不變!


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)