gpt4 book ai didi

java - addValueEventListener(new ValueEventListener() 不读取数据

转载 作者:行者123 更新时间:2023-12-02 03:35:52 25 4
gpt4 key购买 nike

在我下面的代码中,函数 setPhoto(url) 始终接收空 url,但如果我通过单击按钮调用另一个函数并且它需要该 url,它就会正确接收数据。

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_perfil);


reference = mDatabaseAPI.getUserReferenceByUid(user.getUid()).child(PHOTO_URL);
reference.addValueEventListener(new ValueEventListener() {

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
url = dataSnapshot.getValue(String.class);
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(Perfil.this, "La lectura de la foto falló", Toast.LENGTH_LONG).show();
}
});
setPhoto(url);

}

最佳答案

您是否在除此之外的其他地方初始化 url 实例:

    @Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
url = dataSnapshot.getValue(String.class);
}

如果不是,那么调用函数setPhoto(url)时,url的值是多少?它将是您在此 Activity 中初始化 url 的任何内容。如果你用 null 初始化,它将是 null。为什么不将 setPhoto(url) 移到 onDataChange(..) 方法中紧跟该语句之后

url = dataSnapshot.getValue(String.class);

这样,您就可以确定 url 有一个值。单击按钮时 url 被初始化的原因很可能是因为通过调用 onDataChange(...) 方法来调用 ValueEventListener。这就是为什么当单击按钮时您可以正确获取 url 值的原因。希望这能让大家清楚一点。

关于java - addValueEventListener(new ValueEventListener() 不读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com