我是Android开发的新手,仍在学习基础知识,并尝试获得不同的访问权限。我的数据库中具有此结构,我在获取status的值并将其用作用户类型
我收到此错误
java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.gab.quadrantms.LoginActivity$1$1$1.onDataChange(LoginActivity.java:116)
登录
private DatabaseReference mUserType;
mUserType = FirebaseDatabase.getInstance().getReference().child("Users").child("status");
mUserType.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// THIS IS WHERE THE ERROR IS POINTING
String status = dataSnapshot.child("status").getValue().toString();
if(status.equals("Project Manager"))
{
Intent intent = new Intent(LoginActivity.this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
else
{
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
答案 0 :(得分:2)
FirebaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users").child(current_user_id);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String status = dataSnapshot.child("status").getValue().toString();
if(status.equals("Project Manager"))
{
Intent intent = new Intent(LoginActivity.this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
else
{
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
首先,您需要创建对节点Users
的引用,然后由于需要访问子节点status
,并且由于在节点Users
下具有随机ID,因此需要创建引用。您必须在dataSnapshot的直接子级(在本例中为节点Users
)中循环,然后才能获得status
的值。