私は単純なfirebaseアンドロイドアプリケーションを持っています。これはいくつかの異なるユーザを対象にしています。 ユーザーが登録し、作成時に、Uidはユーザーテーブルに格納され、UserInformationエントリにはUidの下に値 'UserType'と 'IsCurrentlyTracking'が格納されます。 ユーザーがサインインすると、Profileアクティビティが表示され、ボタンを押してアプリを通じて続行できます。 私のテーブル構造は次のとおりです。 Android - Firebase; (レイヤード)データを取得し、そのデータに基づいてそのユーザをリダイレクトする
継続を押すと、そのUserInformationデータが取得されます。そのデータに基づいて、別のアクティビティにリダイレクトされます。 上記の代わりに、アプリケーションは停止/クラッシュします。ここで
は、ユーザーをリダイレクトコード/メソッドです:
public void userRedirect(){
firebaseAuth = FirebaseAuth.getInstance();
user = firebaseAuth.getCurrentUser();
final FirebaseDatabase database = FirebaseDatabase.getInstance();
Query q = database.getReference("Users/" + user.getUid() + "/UserInformation");
q.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
UserInformation uI = dataSnapshot.getValue(UserInformation.class);
int userType = uI.getUserType();
boolean ICT = uI.getTrackingStatus();
if ((userType == 1) && (!ICT)) {
finish();
startActivity(new Intent(ProfileActivity.this, AllocationActivity.class));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
databaseError.getMessage();
}
});
}
情報は(のみのユーザーのUIDの下で)「ユーザーのテーブルに格納されていませんでしたが、私は、前のデータを取得することができましたUserInformationはUiDから下降しませんでした。いくつかの余分なコンテキストの場合
は、ここに私のユーザークラスは次のとおりです。
public int UserType;
public boolean IsCurrentlyTracking;
public UserInformation(int userType, boolean IsCurrentlyTracking){
this.UserType = userType;
this.IsCurrentlyTracking = IsCurrentlyTracking;
}
public int getUserType()
{
return UserType;
}
public boolean getTrackingStatus()
{
return IsCurrentlyTracking;
}
すべてのアイデアは私が間違っている可能性がありますどこに? ありがとうございます。
答えていただきありがとうございます。私は再構築し、どのように乗り越えるかを見ていきます。また、データベースルールのアクセス強化にも感謝します。 –