当前位置: 首页 > 知识库问答 >
问题:

如何从Firebase实时数据库中完全删除该值?

公孙河
2023-03-14

我尝试了removeValuesetvalue(null),但它仍然用null替换基中的值。

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.Map;

public class MainActivity extends AppCompatActivity {

    Button mButtonSee;
    TextView mTextViewPromo;

    DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference mPromoRef =                 
mRef.child("delivery").child("0").child("promokod");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButtonSee = findViewById(R.id.buttonSee);
        mTextViewPromo = findViewById(R.id.promo);

        mButtonSee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mPromoRef.addListenerForSingleValueEvent(new 
ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    String text = dataSnapshot.getValue(String.class);
                    mTextViewPromo.setText(text);
                    mPromoRef.removeValue();
                }

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

                    }

                });

            }
        });

    }
}

因此,我想在单击按钮时从第一个数组中获取一个值,然后删除它,再次从新的第一个数组中获取值。

它的数据库结构:

我的新代码:

public class MainActivity extends AppCompatActivity {


Button mButtonSee;
TextView mTextViewPromo;


DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference mPromoRef = mRef.child("delivery");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    mButtonSee = findViewById(R.id.buttonSee);
    mTextViewPromo = findViewById(R.id.promo);


    mButtonSee.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            mPromoRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    LinkedList<String> values = new LinkedList<>();
                    boolean isFirst = true;
                    for (DataSnapshot codeSnapshot: dataSnapshot.getChildren()) {
                        if (isFirst) {
                            isFirst = false;
                        }
                        else {
                            String text = codeSnapshot.getValue(String.class);
                            values.add(text);
                        }
                    }
                    mPromoRef.setValue(values);
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    throw databaseError.toException();
                }

            });

        }
    });

}
}

logcat:2019-02-20 02:11:25.263 163 1-2110/?E/AudioFlinger:内存不足,无法容纳AudioTrack大小=131296

2019-02-20 02:11:25.263 163 1-2110/?E/AudioFlinger:createRecordTrack_l()initCheck失败-12;没有控制块?

2019-02-20 02:11:25.271 265 1-11949/com.google.android.googleQuickSearchbox:搜索E/AudioreCord-JNI:创建AudioRecord实例时出错:初始化检查失败,状态为-12。

2019-02-20 02:11:25.274 265 1-11949/com.google.android.googleQuickSearchbox:search e/android.media.AudioRecord:初始化本机AudioRecord对象时错误代码-20。

2019-02-20 02:11:25.274 265 1-11949/com.google.android.googleQuickSearchBox:Search I/MicrophoneInputStream:mic_started SR:16000 CC:16 SO:6

2019-02-20 02:11:25.275 265 1-11949/com.google.android.googleQuickSearchBox:Search E/ActivityThread:未能找到com.google.android.apps.gsa.testing.ui.audio.Recorded的提供商信息

运行:

共有1个答案

萧宣
2023-03-14
    null
 类似资料:
  • 我如何删除记录“苹果”(在图片中标记)? 根据文档,要移除一个项,需要对引用调用removeValue()。但要获得引用,我需要子ID。因为它是一个随机生成的id(-kisnx87ayigsh3ilp0d),如何删除它?

  • 我以为上面的办法行得通,但它失败了。我把它放在渲染行部分。它出现了reference.remove失败。第一个参数必须是有效的函数。就像在这些房间里,它有信息,我认为这是我出错的地方,但我不知道如何去做它。谢谢。

  • 我在Android应用程序中使用Firebase实时数据库,并且有如下数据: 数据库映像 我想删除周末所有用户的“点”:选项卡。每个周末自动删除。我该怎么做呢。

  • 问题内容: 现在我收到错误消息如何成功清除数据库或迁移? 问题答案: 要从磁盘上完全删除Realm文件并从头开始,只需使用手动删除它即可。 例如,要删除默认的Realm文件: 如果要保留Realm文件,但将对象完全清空,则可以调用以下方法: 更新: 我觉得我在原始答案中没有提到这一点。如果选择从磁盘删除Realm文件,则必须在应用程序中的任何线程上打开它之前,都必须这样做。打开后,Realm会在内

  • 我在Android应用程序中使用Firebase实时数据库,数据如下: 如何从javascript访问该数据。我只想编写一个函数来获取每个endTime的值,并和当前时间和if endTime进行比较 事件是固定值。 Indjija、Vojvodina和-KsB2mVkpgQe_fRyFFH4是自动生成的,所以有可能有更多像这两个的值。 我知道如何解决这个问题在Android Studio与Jav

  • 我仍在开发我的登录应用程序。此时,用户可以注册、登录和更新配置文件信息。数据存储在firebase实时数据库中,该装置也通过firebase工作。我想添加一个“删除配置文件”按钮,以便从firebase中删除用户信息。我弄清楚了如何从自动认证过程中删除用户。现在我尝试对Uid调用remove()函数,因此现在数据在实时数据库中被删除,但仍在Firebase身份验证中,如果删除userdata,应用