Android - уровень доступа Firebase - PullRequest
0 голосов
/ 04 ноября 2018

Я новичок в разработке Android и все еще изучаю основы и пытаюсь получить другой доступ. У меня есть эта структура в моей базе данных. Я получаю значение статуса и использую в качестве типа пользователя

Database Structrure

и я получил эту ошибку

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);
     }
  }

1 Ответ

0 голосов
/ 04 ноября 2018
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. Вы должны выполнить цикл внутри непосредственных потомков dataSnapshot (в данном случае это узел Users), и вы сможете получить значение status.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...