从firebase检索时出现空指针异常[重复]
Posted
技术标签:
【中文标题】从firebase检索时出现空指针异常[重复]【英文标题】:null pointer exception while retrieving from firebase [duplicate] 【发布时间】:2020-04-30 07:18:14 【问题描述】:无法从我的数据库中获取数据所有权限都是公开的并且包括依赖项。我正在尝试将数据打印到 logcat,收到 NullPointerException
MainActivity.java
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
myRef.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
String co2=dataSnapshot.child("co2").getValue().toString();
String humi=dataSnapshot.child("humi").getValue().toString();
String temp=dataSnapshot.child("temp").getValue().toString();
Log.i("kkk","hhh"+ co2 +" "+humi +" "+temp);
// ...
@Override
public void onCancelled(DatabaseError databaseError)
// Getting Post failed, log a message
Log.w("p", "loadPost:onCancelled", databaseError.toException());
// ...
);
【问题讨论】:
【参考方案1】:在您的根引用下,有多个对象。为了获取这些对象,您需要使用 getChildren()
方法迭代 DataSnapshot
对象,如下面的代码行所示:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener valueEventListener = new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
for(DataSnapshot ds : dataSnapshot.getChildren())
double co2 = ds.child("co2").getValue(Double.class);
long humi = ds.child("humi").getValue(String.class);
long temp = ds.child("temp").getValue(String.class);
Log.d(TAG, co2 + " / " + humi + " / " + temp);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
;
rootRef.addListenerForSingleValueEvent(valueEventListener);
您的 logcat 中的结果将是:
1007.87401... / 70 / 24
1259.84251... / 63 / 26
1511.81102... / 63 / 26
//The other records
【讨论】:
Alex Mamo 你是怎么想出来的任何文档请分享。我无法在文档中找到这个 这里是docs。关于我怎么能弄清楚这一点,就是看到你的根下有不止一个孩子。以上是关于从firebase检索时出现空指针异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 pyspark 从 S3 获取数据时出现空指针异常
尝试从 Apache Beam 中的选项获取值时出现空指针异常