【发布时间】:2016-09-04 17:42:13
【问题描述】:
我的Firebase database 结构是:
我想检索某个用户的全名,当我有它的密钥时。
我的代码:
public class ProfileActivity extends AppCompatActivity implements View.OnClickListener {
private FirebaseAuth firebaseAuth;
private TextView textView;
private Button logbutton,wantToDeliverButton,lookForButton;
private String userName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
Firebase.setAndroidContext(this);textView = (TextView)findViewById(R.id.textView2);
Firebase usersRef = new Firebase("https://myfirstfirebaseauth.firebaseio.com");
firebaseAuth = FirebaseAuth.getInstance();
if (firebaseAuth.getCurrentUser() == null){
finish();
startActivity(new Intent(this,LoginActivity.class));
}
FirebaseUser user = firebaseAuth.getCurrentUser();
Firebase ref = usersRef.child("User").child(user.getUid());
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userName = dataSnapshot.getValue(User.class).getFullName();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
textView.setText("welcome "+userName);
}
}
但是它将textView 设置为null。我尝试将 Toast 放入 onDataChange() 方法中,但它不起作用。似乎它甚至没有进入方法。
FirebaseUser user = firebaseAuth.getCurrentUser(); 行是正确的,因为如果我写的是textView.setText("welcome "+ user.getEmail()); - 我真的收到了正确的电子邮件。
如何解决这个问题?我使用了正确的听众吗?我不想更改数据库中的任何内容,只需检索即可。
编辑:它转到onCancelled()。
【问题讨论】:
-
您的问题与
android-studio无关。不要使用不适当的标签发送垃圾邮件!标记已删除。 -
对不起,伙计,我是在 android studio 中写的..不是故意垃圾邮件..
-
使用什么工具并不重要。您标记与您的问题相关 - 所以如果它是
firebase相关代码,您遇到问题,您只标记它firebase(java也不是真正相关 - 您在这里没有任何 java 语言问题) , 您用于创建该代码的工具与您的问题无关。 -
@MarcinOrlowski 您对 Android Studio 标记是正确的。但请记住,大多数开发人员在标记时并不意味着伤害,他们只是没有意识到标记没有帮助(并且会伤害有实际 Android Studio 相关问题的人)。我只是编辑标签,如果他们重复它,一个温和的提醒会有很长的路要走。我现在经常把它比作问“我应该把三尖牛排腌多久?”然后用 [厨房] 标记。 :-)
-
@user3552460 @qbix 对混合版本一针见血。除此之外,您的用户可能没有对该节点的读取权限,并且您在对其进行身份验证之前附加了侦听器。在您的
onCancelled中始终至少抛出错误:throw firebaseError.toException(),否则您将隐藏诸如此类的问题。
标签: android firebase firebase-realtime-database