Я пытался сохранить данные в базе данных.
Я использую полосу загрузки, чтобы указать процесс, тогда, если процесс сохранения будет успешным или неудачным, он предложит отклонить.
, но в моем кодебар загрузки не сбрасывает, я думаю, что это снова зацикливание.Вот мой код:
private EditText namalengkap, namapanggilan, nisn, kelas;
private Button btnsimpan, btnkeluar;
private ProgressDialog loadingBar;
private String nisnsiswa, kelassiswa, namasiswa, panggilansiswa;
Процесс сохранения начинается здесь:
btnsimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
simpandata();
}
});
метод "simpandata" перейдет к следующему коду:
private void simpandata() {
namasiswa = namalengkap.getText().toString();
panggilansiswa = namapanggilan.getText().toString();
kelassiswa = kelas.getText().toString();
nisnsiswa = nisn.getText().toString();
if (TextUtils.isEmpty(namasiswa)) {
Toast.makeText(this, "Ketik Nama Siswa", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(panggilansiswa)) {
Toast.makeText(this, "Ketik Nama Panggilan", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(kelassiswa)) {
Toast.makeText(this, "Ketik Nama Kelas Siswa", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(nisnsiswa)) {
Toast.makeText(this, "Ketik Nomor NISN Siswa", Toast.LENGTH_SHORT).show();
} else {
loadingBar.setTitle("Memasukan Data Siswa");
loadingBar.setMessage("Silahkan Tunggu");
loadingBar.setCanceledOnTouchOutside(false);
loadingBar.show();
verifikasisimpan();
}
}
вПриведенная выше строка загрузки кода начинает отображаться, а затем переходит к методу «verifyikasisimpan» с этим кодом.
private void verifikasisimpan() {
final DatabaseReference datasiswa;
datasiswa = FirebaseDatabase.getInstance().getReference();
datasiswa.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (!(dataSnapshot.child("Siswa").child(nisnsiswa).exists()))
{
HashMap<String, Object> siswadataMap = new HashMap<>();
siswadataMap.put("nisnsiswa", nisnsiswa);
siswadataMap.put("kelassiswa", kelassiswa);
siswadataMap.put("namasiswa", namasiswa);
siswadataMap.put("panggilansiswa", panggilansiswa);
datasiswa.child("Siswa").child(nisnsiswa).updateChildren(siswadataMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(InputDataActivity.this, "Data Telah Tersimpan", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
} else {
Toast.makeText(InputDataActivity.this, "Penyimpanan Data Gagal, Silahkan Coba Lagi", Toast.LENGTH_LONG).show();
loadingBar.dismiss();
}
}
});
}
else {
Toast.makeText(InputDataActivity.this,"Siswa "+ namasiswa + " telah terdaftar.", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
Toast.makeText (InputDataActivity.this,"Silahkan Daftarkan Siswa Lain", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Я должен был показать тост при успехе или неудаче и закрыть загрузчик, но я думаю, что приложения не достигли«если задание выполнено успешно или неуспешно», строка загрузки продолжает отображаться, поэтому я отменяю ее, нажимая клавишу Backspace, я проверил базу данных, данные не сохраняются, где я их пропускаю,
PS: я скопировал процедуру измой предыдущий рабочий код.