我试图将数据保存到Firebase。
我正在使用加载栏来指示该过程,然后,如果保存过程成功或失败,它将拒绝投标。
但是在我的代码加载栏中并没有关闭,我认为它再次循环。这是我的代码:
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();
}
}
在上面的代码加载栏中开始显示,然后使用此代码进入方法“ verifikasisimpan”。
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) {
}
});
}
我本应在成功或失败时显示祝酒词,并解雇加载程序,但是我猜应用程序未达到“任务成功或失败的部分”,加载栏一直显示,因此我通过按退格键将其取消,并检查了数据库,数据没有保存,我想念的地方,
PS:我从以前的工作代码中复制了该过程。