保存Firebase数据失败

时间:2019-02-28 08:14:38

标签: android firebase firebase-realtime-database

我试图将数据保存到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:我从以前的工作代码中复制了该过程。

0 个答案:

没有答案