在函数(Android Studio)中重新分配后,全局变量值分配保持不变]]

问题描述 投票:0回答:1

程序员,对于android studio和java来说,我是一个陌生的人,在这种情况下,我试图上传检索到的用户信息并将其存储在firebase数据库中。检索过程成功,并且在登录后可以看到检索URL。但是,String pathToProfile没有分配URL,当我检查日志时,它为null。预先感谢!

全局声明:

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

检索下载URL的功能

// retrieved URL should be saved in user document
    private void retrieveProfileViaURL () {
        profileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                pathToProfile = uri.toString();
                UserInfo.put(PROFILE_URL, pathToProfile);
                Log.d(TAG, "retrieve profile image successful" + pathToProfile);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Log.d(TAG, "retrieve profile image failure");
                // pathToProfile = "uri download unsuccessful";
            }
        });
    }

将用户信息上传到firebase的功能

private void uploadUserInfo(String user, String bioInfo) {
        // CollectionReference users = db.collection("users");
        String UID = getUserID();
        retrieveProfileViaURL();

        // UserInfo.put(USERID, UID);
        UserInfo.put(USERNAME, user);
        UserInfo.put(BIO, bioInfo);


        mDocRef.collection("users").document(UID).set(UserInfo)
                .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Log.d(USER_INFO, "Document has been saved");
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(USER_INFO, "Document was not saved!", e);
            }
        });
    }

程序员,对于android studio和java来说,我是一个陌生的人,在这种情况下,我试图上传检索到的用户信息并将其存储在firebase数据库中。检索过程成功,并且检索...

java android google-cloud-firestore firebase-storage
1个回答
0
投票

Firebase数据库中的所有数据都是异步读取的。您无法在通话之外获取值。这就是为什么您的pathToProfile显示为空。

© www.soinside.com 2019 - 2024. All rights reserved.