方法不返回任何东西

Saj*_*jib -1 java null android firebase google-cloud-firestore

我有一个Java类,其中包含CheckForUpdate()一个返回类型为的方法String。从我发起对此方法的调用activity class。此方法将获取的String值分配给class名为的变量link。在ifblock变量内部link显示已提取String。但是在return语句中它返回null。这是为什么?


Java类:

public class method_class {

    Context context;

    public String link;
    boolean b;

    public FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
    public FirebaseFirestore firestore = FirebaseFirestore.getInstance();

    //constructor
    public method_class(Context context)
    {
        this.context = context;
    }

    public String CheckForUpdate()
    {
        firestore.collection("Admin").document("appinfo")
                .get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {

                if(task.isSuccessful())
                {
                    DocumentSnapshot documentSnapshot = task.getResult();

                    String version = documentSnapshot.getString("version");

                    final String in_app_version = BuildConfig.VERSION_NAME;

                    if(!TextUtils.equals(version, in_app_version))
                    {
                        //update available
                        link = documentSnapshot.getString("link");
                    }
                    else
                    {
                        //no update
                        link = null;
                    }
                }
                else
                {
                    Toast.makeText(context, task.getException().getMessage(),Toast.LENGTH_LONG).show();
                }
            }
        });

        return link;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kus*_*han 8

Firebase方法是异步的,您的方法基本上是在侦听器获取事件之前返回结果。相反,一旦onComplete成功执行任务后就应使用结果,而不是使用方法返回String