数据库未更新值

时间:2020-07-26 19:43:51

标签: android firebase

我正在尝试制作一个社交应用程序..我希望当用户单击编辑类别数据库时,应该将其更新为新值..但这就像静态不更改为新值..我不知道逻辑或代码中的问题..

    private void showCategoryUpdateDialog(String Key) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("تغيير " + Key);


    LinearLayout linearLayout = new LinearLayout(getActivity());
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    linearLayout.setPadding(15, 10, 15, 10);

    RadioButton radioButton = new RadioButton(getActivity());
    radioButton.setText("علمي علوم");
    RadioButton radioButton2 = new RadioButton(getActivity());
    radioButton2.setText("علمي رياضة");
    RadioButton radioButton3 = new RadioButton(getActivity());
    radioButton3.setText("أدبي");

    linearLayout.addView(radioButton);
    linearLayout.addView(radioButton2);
    linearLayout.addView(radioButton3);

    builder.setView(linearLayout);
    builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String value = radioButton.getText().toString().trim();
            String value2 = radioButton2.getText().toString().trim();
            String value3 = radioButton3.getText().toString().trim();

            if (!TextUtils.isEmpty(value)) {
                pd.show();
                HashMap<String, Object> result = new HashMap<>();
                result.put(Key, value);

                databaseReference.child(user.getUid()).updateChildren(result)
                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                pd.dismiss();
                                Toast.makeText(getActivity(), "Updated...", Toast.LENGTH_SHORT).show();
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        pd.dismiss();
                        Toast.makeText(getActivity(), "" + e.getMessage(), Toast.LENGTH_SHORT).show();

                    }
                });


            } else {
                Toast.makeText(getActivity(), "Please enter " + Key, Toast.LENGTH_SHORT).show();

            }

            if (!TextUtils.isEmpty(value2)) {
                pd.show();
                HashMap<String, Object> result2 = new HashMap<>();
                result2.put(Key, value2);

                databaseReference.child(user.getUid()).updateChildren(result2)
                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                pd.dismiss();
                                Toast.makeText(getActivity(), "Updated...", Toast.LENGTH_SHORT).show();
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        pd.dismiss();
                        Toast.makeText(getActivity(), "" + e.getMessage(), Toast.LENGTH_SHORT).show();

                    }
                });


            } else {
                Toast.makeText(getActivity(), "Please enter " + Key, Toast.LENGTH_SHORT).show();

            }

            if (!TextUtils.isEmpty(value3)) {
                pd.show();
                HashMap<String, Object> result3 = new HashMap<>();
                result3.put(Key, value3);

                databaseReference.child(user.getUid()).updateChildren(result3)
                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                pd.dismiss();
                                Toast.makeText(getActivity(), "Updated...", Toast.LENGTH_SHORT).show();
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        pd.dismiss();
                        Toast.makeText(getActivity(), "" + e.getMessage(), Toast.LENGTH_SHORT).show();

                    }
                });


            } else {
                Toast.makeText(getActivity(), "Please enter " + Key, Toast.LENGTH_SHORT).show();

            }

        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    builder.create().show();

}

此图片中有更多细节

Emulator

这是我数据库中的GIF

https://media.giphy.com/media/ZY36QuzJsdXIhIQh7k/giphy.gif

1 个答案:

答案 0 :(得分:0)

首先:确保新值存储在数据库中(从控制台) 第二:更新完成后,onCompleteListener重新获得数据。 您可以实时监听此字段的变化,这比每次更新后获取数据要好。

相关问题