2017-05-03 11 views
0

ログイン画面でIDとパスワードを一致させたいのですが、IDはルートノードの子であり、パスワードなどはその子としてのものです。しかし、私のコードでは、不正行為を実行してタスクを実行しないようにしています。次のようにDatabase Structure コードは次のとおりです。ルートノードの子の子であるFirebaseからデータを取得します

private void login(){ 
    final String id1 = id.getText().toString().trim(); 
    final String pwd1 = password.getText().toString().trim(); 
    if (TextUtils.isEmpty(id1)){ 
     Toast.makeText(this, "Enter ID", Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    if (TextUtils.isEmpty(pwd1)){ 
     Toast.makeText(this, "Enter Password", Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    final ProgressDialog progressDialog = new ProgressDialog(User_Login.this); 
    progressDialog.setMessage("Logging in.."); 
    progressDialog.show(); 

    databaseReference= FirebaseDatabase.getInstance().getReference().child("user"); 
    DatabaseReference databaseReference1=databaseReference.child(id1); 
    databaseReference1.child(pwd1).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(pwd1.equals(dataSnapshot.child("password").getValue().toString())){ 
       progressDialog.dismiss(); 
       finish(); 
       Toast.makeText(User_Login.this, "Login Successful", Toast.LENGTH_SHORT).show(); 
       startActivity(new Intent(User_Login.this,Services.class)); 
      } 
      else{ 
       progressDialog.dismiss(); 
       Toast.makeText(User_Login.this, "Wrong Id/Password", Toast.LENGTH_SHORT).show(); 
      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

} 
+0

私はデータベース構造を提供してください –

+0

@AlexMamo確かに、私はリンクを追加しました –

答えて

0

このコードを使用してください:

databaseReference = FirebaseDatabase.getInstance().getReference().child("user").child(id1); 
databaseReference.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if(pwd1.equals(dataSnapshot.child("password").getValue().toString())){ 
      progressDialog.dismiss(); 
      finish(); 
      Toast.makeText(User_Login.this, "Login Successful", Toast.LENGTH_SHORT).show(); 
      startActivity(new Intent(User_Login.this,Services.class)); 
     } else { 
      progressDialog.dismiss(); 
      Toast.makeText(User_Login.this, "Wrong Id/Password", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

問題は、あなたが、必要ではないchild(pwd1)を余分な子を追加しているということです。

希望します。

+0

しかし間違ったパスワードIDを入力すると私の活動は依然として誤動作しています。 ELSEの部分で何が問題になっていますか? –

+0

パスワードのIDが間違って入力されたときに、 'あなたはまだ誤動作していますか?何が起こっている? –

+0

正しい資格情報を入力しないと、進行状況ダイアログの実行が白い画面の遅いフラッシュで終了し、前のアクティビティが開き、トーストが表示されません。 –

関連する問題