我目前正在开发一款Android应用,只需要用户在按开始后注册一次。用户下次打开应用程序时,按 start 会将用户重定向到主游戏。
我能够使用SharedPreferences执行此操作。注册后,我存储了一个名为currentState的值,我用它来检查用户是否已经注册。这是代码:
final int currentState = sharedPreferences.getInt(USERSTATE_NUM_KEY,0);
if(currentState == 0 ) {
Intent i = new Intent(MainActivity.this, Main_Screen.class);
startActivity(i);
} else{
// Redirect user to tutorial page, then the map page.
}
现在我被要求使用Firebase再次完成此操作,因为我已经存储了用户数据。
到目前为止,我的代码只是为了尝试它是否会进入 onDataChange ,但它没有,我不知道该怎么做现在。到目前为止,这是我的代码:
final String currentUsername = sharedPreferences.getString(USERNAME_NUM_KEY, "");
final DatabaseReference userNameRef = rootReference.child("users");
startGame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
userNameRef.orderByChild("username").equalTo(currentUsername)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Log.v("TESTERR", "HELLO I EXIST LOL");
}
else{
Log.v("TESTERR", "NEW USER PAGE");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
谢谢!!!
答案 0 :(得分:2)
此:
userNameRef.orderByChild("username").equalTo(currentUsername)
是一个查询,就像说where username= currentUsername
currentUsername
是登录用户,数据快照为users
。
因此,在您的数据库中,您有:
users
userid
username: currentUsername
当您使用if(dataSnapshot.exists()){
时,它会检查users
的快照并检查where
条件,如果它们存在于数据库中,那么它将进入if子句。
如果数据库中不存在where
条件,则它将进入else
。