我把钥匙放在这里是额外的:(我使用firebase作为我的数据库)
DatabaseReference mChildDatabase = mDatabaseRef.child("Users").push();
String key_user = mChildDatabase.getKey();
Intent in = new Intent(MainActivity.this, Profile.class);
in.putExtra("USER_KEY" , key_user);
in.putExtra("USER_EMAIL" , String.valueOf(dataUser.child("emailUser").getValue()));
in.putExtra("USER_PASS" , String.valueOf(dataUser.child("passWordUser").getValue()));
in.putExtra("USER_ID" , String.valueOf(dataUser.child("userID").getValue()));
startActivity(in);
关于第二项活动,我在这里获得额外的收益:
String userNameString = name.getText().toString();
String userPhoneString = phone.getText().toString();
String userAgeString = age.getText().toString();
String userBirthString = birth.getText().toString();
String userUserNameString = username.getText().toString();
//GET USER KEY FROM INTENT
String userKey = getIntent().getStringExtra("USER_KEY");
mFirebaseDatabase.child(userKey).child("userName").setValue(userNameString);
String userEmail = getIntent().getStringExtra("USER_EMAIL");
String userPass = getIntent().getStringExtra("USER_PASS");
String userID = getIntent().getStringExtra("USER_ID");
注意这一行? mFirebaseDatabase.child(userKey).child("userName").setValue(userNameString);
我在该行上收到错误,因为它说我指的是空的,我不知道发生了什么事我已经好几个小时了。所以我决定最后在这里问一下,我可能只是愚蠢或者什么。但是,我是在误导某些事情。
我像这样宣布了参考:
DatabaseReference mDatabaseRef,mFirebaseDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference().child("Users");
我的火力架看起来像这样:
我不知道发生了什么,为什么我无法将userName
设置为某种东西。为什么它指向null?我重复了一些过去的代码,但两者都没有用。我有一个使用firebase的应用程序,它实现就像我做的那样,但在这种情况下,我无法正确设置它。请帮忙。
更新:logcat显示密钥是未显示的密钥,这就是为什么它指向null,但是我仍然卡住了。我把我的头发拉出来,我是如此愚蠢。仍然没有工作
答案 0 :(得分:0)
请看看
if(userKey!=null && userNameString!=null){
if(mFirebaseDatabase.child(userKey)!=null){
if(mFirebaseDatabase.child(userKey).child("userName")!=null){
mFirebaseDatabase.child(userKey).child("userName").setValue(userNameString);
}
}
}
答案 1 :(得分:0)
而不是String userKey = getIntent().getStringExtra("USER_KEY");
,请尝试以下代码:
String userKey = getIntent().getStringExtra(MainActivity."USER_KEY");
另外,请包含一些日志记录或Toast以查看变量的实际值。
答案 2 :(得分:0)
retrieving data使用以下代码:
DatabaseReference dataUser = mFirebaseInstance.getReference("Users");
dataUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
//dataSnapshot points to the User node with list of users
//Retrieve data from the childrens emailUser,passWordUser,userID and Invoke start activity
for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
Log.d("onDataChange:", "PARENT: " + childDataSnapshot.getKey());
Log.i("emailUser: ",
String.valueOf(childDataSnapshot.child("emailUser").getValue()));
Log.i("passWordUser: ",
String.valueOf(childDataSnapshot.child("passWordUser").getValue()));
Log.i("userID: ",
String.valueOf(childDataSnapshot.child("userID").getValue()));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
addListenerForSingleValueEvent
可用于读取数据一次。