java - 为什么条目在 Firebase 数据库中不断循环?

标签 java android firebase firebase-realtime-database

这是 Firebase 数据库截图

Image here

这是我的 MainActivity.java java 代码:

public class MainActivity extends AppCompatActivity {
    EditText date, title, description, imageURL;
    Button btn_click;
    DatabaseReference databaseReference;
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    btn_click = findViewById(R.id.btn_click);
        date = findViewById(R.id.date);
        title = findViewById(R.id.title);
        description = findViewById(R.id.description);
        imageURL = findViewById(R.id.imgUrl);
           databaseReference = FirebaseDatabase.getInstance().getReference("notifications");
        Log.e("Reference is : ", String.valueOf(databaseReference));
            btn_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   databaseReference.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            String d= date.getText().toString().trim();
                        String t= title.getText().toString().trim();
                        String desc= description.getText().toString().trim();
                        String i= imageURL.getText().toString().trim();
                            Model model = new Model(d,t,desc,i);
                        String id =  databaseReference.push().getKey();
                        databaseReference.push().setValue(model);
                            Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                        Toast.makeText(MainActivity.this, "Error Occured !", Toast.LENGTH_SHORT).show();
                    }
                });

这是模型类:

String date,desc,image,title;
public  Model(){
}
public Model(String date, String desc, String image, String title) {
    this.date = date;
    this.desc = desc;
    this.image = image;
    this.title = title;
}
public String getDate() {
    return date;
}
public String getDesc() {
    return desc;
}
public String getImage() {
    return image;
}
public String getTitle() {
    return title;
}

为什么条目在数据库中重复,我该如何避免?

最佳答案

改变这个:

btn_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   databaseReference.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            String d= date.getText().toString().trim();
                        String t= title.getText().toString().trim();
                        String desc= description.getText().toString().trim();
                        String i= imageURL.getText().toString().trim();
                            Model model = new Model(d,t,desc,i);
                        String id =  databaseReference.push().getKey();
                        databaseReference.push().setValue(model);
                            Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                        Toast.makeText(MainActivity.this, "Error Occured !", Toast.LENGTH_SHORT).show();
                    }
                });

进入这个:

btn_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                            String d= date.getText().toString().trim();
                        String t= title.getText().toString().trim();
                        String desc= description.getText().toString().trim();
                        String i= imageURL.getText().toString().trim();
                            Model model = new Model(d,t,desc,i);
                        String id =  databaseReference.push().getKey();
                        databaseReference.child(id).setValue(model);
                            Toast.makeText(MainActivity.this, "Submitted Successfully ", Toast.LENGTH_SHORT).show();
                    }
                });

向数据库添加数据时,不需要使用用于检索数据的addValueEventListener

关于java - 为什么条目在 Firebase 数据库中不断循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434376/

相关文章:

android - 如何使用动态数据显示复选框列表

javascript - 从嵌套对象中删除父键

java - 如果井字游戏中的位置已被占用,则重复玩家回合

java - 缺少 javax.swing

android - Android Studio生成签名的APK

android - 拆分长度不正确的音轨 - FFMPEG

java - 双维数组(素数(和)计数缺陷)

java - JTextArea 中的滚动条

firebase - 无法登录 firebase 帐户会引发异常并停止 flutter 应用程序

javascript - 列出 Firebase 数据库中的节点