0
先生が作成したクラスのQRコードをスキャンするアプリケーションを作成しています。複数更新FirebaseデータベースAndroid
生徒がスキャンすると、その生徒の詳細がクラスリストデータに保存されます。私の問題は、名前、ミドルネーム、ラストネームを変更しようとすると、最初のボックスだけが更新され、2番目と3番目のボックスは更新されません。
ここで誰かが私を助けてくださいことはできますか?ここで
は、最初のボックスを更新するコードです:
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);
}
});