Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查我的孩子中的数据是否存在?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何检查我的孩子中的数据是否存在?

Java 如何检查我的孩子中的数据是否存在?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这是代码,它不会检查我的editText中的值是否存在 mSubmitBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final String title_val = mPostTitle.getText().toString().trim(); mDatabase2 = FirebaseDatabase.g

这是代码,它不会检查我的editText中的值是否存在

mSubmitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        final String title_val = mPostTitle.getText().toString().trim();
        mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Forums");
        mDatabase2.child("title").child("KS1: "+title_val).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()) {
                    String success = "Your title already exists...";
                    Toast.makeText(PostActivityKinderSection1.this, success, Toast.LENGTH_LONG).show();
                    mSubmitBtn.setEnabled(true);
                }
                else {
                    mSubmitBtn.setEnabled(false);
                    startPosting();
                }
            }
        });
    }
});
我希望避免在firebase中多次保存同一标题


您不仅可以检查
title
子论坛是否存在,还必须在所有论坛上进行迭代,以确定是否已经有一个论坛具有要保存的标题。您可以这样做:

final String title_val = "KS1: " + mPostTitle.getText().toString().trim();
mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Forums");
mDatabase2.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    void onDataChange(DataSnapshot forumsSnapshot) {
        boolean isTitleAlreadyUsed = false;

        for (DataSnapshot specificForum : forumsSnapshot.getChildren()) { 
            // Check if key 'title' exists and if title value is equal to value to save (title_val)  
            if (specificForum.hasChild("title") && (title_val.equals(specificForum.child("title").getValue()))){
                isTitleAlreadyUsed = true;
            }
        }

        if (isTitleAlreadyUsed) {
            String success = "Your title already exists...";
            Toast.makeText(PostActivityKinderSection1.this, success, Toast.LENGTH_LONG).show();
            mSubmitBtn.setEnabled(true);
        }
        else {
           mSubmitBtn.setEnabled(false);
           startPosting();
        }
    }
}   

如果您有性能问题,请尝试将for循环替换为while循环,或者在db构造中使用title作为子键

它不断显示标题已经存在,即使它不存在。如何解决这个问题?谢谢,我只是忘了将IstitleReadyUsed设置为false。非常感谢你。正如你所说,我的
isTitleAlreadyUsed
的初始化是错误的。我立即更新答案以解决此问题;)