java - 从火力地堡检索数据

标签 java android firebase firebase-realtime-database

这是我从 firebase 实时数据库中检索数据的 android 代码:

package com.example.firebaseapp;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import`enter code here` 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;

public class MainActivity extends AppCompatActivity {

    Button f;
    TextView status;

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("light");

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        f=(Button)findViewById(R.id.button);
        status=(TextView) findViewById(R.id.lightstatus);

        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                status.setText(value);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError){
                status.setText("Could not fetch data..");
            }
        });
    }

    public void lighton(View view){
        myRef.setValue(1);
    }

    public void lightoff(View view){
        myRef.setValue(0);
    }
}

该应用程序正在正确编译,但每当我运行它时,该应用程序就会崩溃并显示错误消息“不幸的是,Firebase 应用程序已停止”。请帮我解决这个问题。 这是我的数据库中的一个 fragment : Database screenshot

最佳答案

将 String 更改为 Integer 或 Long,因为 light 值不是 String。

public class MainActivity extends AppCompatActivity {

Button f; TextView status; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); f = (Button)findViewById(R.id.button); status = (TextView) findViewById(R.id.lightstatus); FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("light"); myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { Integer value = dataSnapshot.getValue(Integer.class); status.setText(String.valueOf(value)); } @Override public void onCancelled(@NonNull DatabaseError databaseError){ status.setText("Could not fetch data.."); } }); } public void lighton(View view){ myRef.setValue(1); } public void lightoff(View view){ myRef.setValue(0); } }

关于java - 从火力地堡检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54862858/

相关文章:

android - Bitrise 默认环境变量

java - 从字符串中获取枚举索引?

Firebase:sendSignInLinkToEmail() 抛出: "The given sign-in provider is disabled for this Firebase project."

firebase - 如何消除实时数据库Firebase抖动中的自动生成的 key

android - Android 中的半透明对话框

javascript - 从 Firebase 获取一个值并将其更新为当前值 + 1

java - com.thoughtworks.selenium 和 org.seleniumhq.selenium 之间的区别

java - 找不到包裹

java - 合并两个 java servlet 的输出

java - RxJava : Find out if BehaviorSubject was a repeated value or not