public class Hospitals extends AppCompatActivity {
private DatabaseReference mDatabase;
private String []hospitals;
private String []links;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hospitals);
mDatabase= FirebaseDatabase.getInstance().getReference().child("Hospitals");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String total=dataSnapshot.child("total").getValue().toString();
hospitals=new String[Integer.parseInt(total)];
links=new String[Integer.parseInt(total)];
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(Hospitals.this,String.valueOf(hospitals.length),Toast.LENGTH_LONG).show();
}
这是数据库,我想提取存储在密钥“total”中的值2:
所有依赖项都已正确设置,其他与数据库相关的操作正常运行。
答案 0 :(得分:0)
要解决此问题,请更改以下代码行:
√
与
String total=dataSnapshot.child("total").getValue().toString();
您的代码中的问题是,您可以从数据库获取数据,而String类则将数据存储为整数。
修改强>
根据您的评论,您的Toast在该位置不起作用,因为int total=dataSnapshot.child("total").getValue(Integer.class);
方法具有异步行为,这意味着当您尝试向该消息干杯时,数据尚未从数据库。快速解决这个问题的方法是在onDataChange()
方法中使用Toast only ,或者如果你想在外面使用它,你需要创建自己的回调,为此,我建议你会从 post 中看到我答案的最后一部分。