0

先生が作成したクラスのQRコードをスキャンするアプリケーションを作成しています。複数更新FirebaseデータベースAndroid

生徒がスキャンすると、その生徒の詳細がクラスリストデータに保存されます。私の問題は、名前、ミドルネーム、ラストネームを変更しようとすると、最初のボックスだけが更新され、2番目と3番目のボックスは更新されません。

The first oblong is the user ID of the teacher and the second one is the value of the QR code for the class he/she created.

ここで誰かが私を助けてくださいことはできますか?ここで

は、最初のボックスを更新するコードです:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
String uid = user.getUid(); 
ref = FirebaseDatabase.getInstance().getReference(); 
ref.child("users").child("student").child(uid).addListenerForSingleValueEvent(new ValueEventListener() { 
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    String uid = user.getUid(); 
    String newFirstName = oldEmail.getText().toString().trim(); 
    String newMiddleName = middlename.getText().toString().trim(); 
    String newLastName = lastname.getText().toString().trim(); 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     ref.child("users").child("student").child(uid).child("firstname").setValue(newFirstName); 
     ref.child("users").child("student").child(uid).child("middlename").setValue(newMiddleName); 
     ref.child("users").child("student").child(uid).child("lastname").setValue(newLastName); 
     progressBar.setVisibility(View.GONE); 

    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Toast.makeText(AccountSettingsActivity.this, "Failed to update name!", Toast.LENGTH_SHORT).show(); 
     progressBar.setVisibility(View.GONE); 
    } 
}); 

ここでは第二と第三のボックスを更新するコードです:

ref.child("users").child("teacher").child("class").child("Listofstudents").child(user.getUid().toString().trim()).addListenerForSingleValueEvent(new ValueEventListener() { 
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    String uid = user.getUid(); 
    String newFirstName = oldEmail.getText().toString().trim(); 
    String newMiddleName = middlename.getText().toString().trim(); 
    String newLastName = lastname.getText().toString().trim(); 

    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.exists()) { 
      ref.child("users").child("teacher").child(ref.child("teacher").getKey()).child("class").child(ref.child("class").getKey()).child("Listofstudents").child(user.getUid().toString().trim()).child("firstname").setValue(newFirstName); 
      ref.child("users").child("teacher").child(ref.child("teacher").getKey()).child("class").child(ref.child("class").getKey()).child("Listofstudents").child(user.getUid().toString().trim()).child("middlename").setValue(newMiddleName); 
      ref.child("users").child("teacher").child(ref.child("teacher").getKey()).child("class").child(ref.child("class").getKey()).child("Listofstudents").child(user.getUid().toString().trim()).child("lastname").setValue(newLastName); 
      // TODO: handle the case where the data already exists 
     } 
     else { 
      // TODO: handle the case where the data does not yet exist 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError firebaseError) { 
     Toast.makeText(AccountSettingsActivity.this, "Failed to update name!", Toast.LENGTH_SHORT).show(); 
     progressBar.setVisibility(View.GONE); 
    } 
}); 

答えて

0

あなたが追加する必要はありませんが、 listenerを使用して、Firebaseデータベースで更新を行います。

私の答えはこちらpostでご覧ください。

希望します。

関連する問題