java - 为什么不显示进度对话框?

标签 java android firebase-realtime-database progressdialog

我的编码工作的数据保存在实时数据库中。然而,进度对话不起作用。实时数据库中数据保存失败如何用编码表示?

private void SaveAccountInformation() {

    loadingBar.setTitle("Registration Account");
    loadingBar.setMessage("Please wait while we are registering you in our system.");
    loadingBar.show();
    loadingBar.setCanceledOnTouchOutside(true);

    String firstname = RegisterFirstName.getText().toString();
    String lastname = RegisterLastName.getText().toString();

    if (TextUtils.isEmpty(firstname))
        Toast.makeText(RegistrationActivity.this, "Enter your first name.", Toast.LENGTH_SHORT).show();

    else if (TextUtils.isEmpty(lastname))
        Toast.makeText(RegistrationActivity.this, "Last name is required.", Toast.LENGTH_SHORT).show();

    else {
        String userid = databaseUser.push().getKey();
        User user = new User(firstname, lastname);
        databaseUser.child(userid).setValue(user);
        Toast.makeText(RegistrationActivity.this, "Registration has been successful.", Toast.LENGTH_SHORT).show();

        Intent HomeIntent = new Intent(RegistrationActivity.this, home.class);
        HomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(HomeIntent);
        finish();
    }

    loadingBar.dismiss();
}

最佳答案

据我了解您的问题,您想要跟踪数据是否正确保存并同时显示进度对话框。我想您正在使用 Firebase 数据库并将值保存在特定节点下。

我想您可能会考虑在此处使用回调函数,同时将数据保存在 Firebase 实时数据库中。

我正在重写代码。请注意,代码未经测试,如果出现任何语法错误,请进行修改。

private void SaveAccountInformation() {

    ProgressDialog loadingBar = new ProgressDialog(RegistrationActivity.this);
    loadingBar.setMessage("Please wait while we are registering you in our system.");
    loadingBar.show();
    loadingBar.setCanceledOnTouchOutside(true);

    String firstname = RegisterFirstName.getText().toString();
    String lastname = RegisterLastName.getText().toString();

    if (TextUtils.isEmpty(firstname))
        Toast.makeText(RegistrationActivity.this, "Enter your first name.", Toast.LENGTH_SHORT).show();

    else if (TextUtils.isEmpty(lastname))
        Toast.makeText(RegistrationActivity.this, "Last name is required.", Toast.LENGTH_SHORT).show();

    else {

        String userid = databaseUser.push().getKey();
        User user = new User(firstname, lastname);

        databaseUser.child(userid).setValue(user)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Toast.makeText(RegistrationActivity.this, "Data saved successfully!", Toast.LENGTH_SHORT).show();
                    loadingBar.dismiss();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(RegistrationActivity.this, "Failed to save the data", Toast.LENGTH_SHORT).show();
                    loadingBar.dismiss();
                }
            }); 

        Intent HomeIntent = new Intent(RegistrationActivity.this, home.class);
        HomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(HomeIntent);
        finish();
    }
}

希望有帮助。

关于java - 为什么不显示进度对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000574/

相关文章:

java - Spring Boot Multi-Tenancy 架构中的表同步

java - 显示存储在 .txt 文件中的逗号分隔数据

Android - 带有 3 个按钮的 map

java - Firebase Datasnapshot 返回空值

java - NoSuchElementException 是 ResourceNotFoundException 的一个很好的替代品吗?

java - PriorityQueue,优先插入

java - 我如何重用 ScriptContext(或以其他方式提高性能)?

Android Java 服务和定时器/线程休眠

ios - 如何循环遍历 Firebase 数据

ios - 在从 Firebase 加载数据之前,UITableView 显示为空白