Java 无法在Firebase中实例化活动组件信息
我只是尝试从Firebase实时数据库中检索JSON数据,并将其显示在文本视图中 我不知道为什么会发生这种情况,在gradle中添加了gms和应用插件,包括项目级和模块级,这是我的MainActivity.java 很抱歉将此添加到JSSnippet中 任何帮助都将不胜感激Java 无法在Firebase中实例化活动组件信息,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我只是尝试从Firebase实时数据库中检索JSON数据,并将其显示在文本视图中 我不知道为什么会发生这种情况,在gradle中添加了gms和应用插件,包括项目级和模块级,这是我的MainActivity.java 很抱歉将此添加到JSSnippet中 任何帮助都将不胜感激 package com.example.halo.firebase; 导入android.support.v7.app.AppActivity; 导入android.os.Bundle; 导入android.widget.
package com.example.halo.firebase;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.TextView;
导入com.google.firebase.FirebaseApp;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
公共类MainActivity扩展了AppCompatActivity{
私有文本视图;
私有FirebaseDatabase FirebaseDatabase=FirebaseDatabase.getInstance();
私有数据库引用mRootreference=firebaseDatabase.getReference();
私有数据库引用mChildreference=mRootreference.child(“消息”);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//FirebaseApp.initializeApp(本);
setContentView(R.layout.activity_main);
MagTxt=(TextView)findViewById(R.id.msgTxt);
setText(“刷新数据…”);
}
@凌驾
受保护的void onStart(){
super.onStart();
mChildreference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
String Message=dataSnapshot.getValue(String.class);
MagTxt.setText(消息);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
}
我认为问题在于您在开放环境中实例化了FirebaseDatabase
和DatabaseReference
您应该创建变量,然后在onCreate
中实例化它们
像这样:
public class MainActivity extends AppCompatActivity {
// without instantiation
private TextView MagTxt;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference mRootreference;
private DatabaseReference mChildreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// instantiate in the onCreate method
firebaseDatabase = FirebaseDatabase.getInstance();
mRootreference = firebaseDatabase.getReference();
mChildreference = mRootreference.child("message");
MagTxt = (TextView) findViewById(R.id.msgTxt);
MagTxt.setText("Refreshing Data...");
}
@Override
protected void onStart() {
super.onStart();
mChildreference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String Message = dataSnapshot.getValue(String.class);
MagTxt.setText(Message);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
希望这会有所帮助。我认为问题在于您在开放环境中实例化了
FirebaseDatabase
和DatabaseReference
您应该创建变量,然后在onCreate
中实例化它们
像这样:
public class MainActivity extends AppCompatActivity {
// without instantiation
private TextView MagTxt;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference mRootreference;
private DatabaseReference mChildreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// instantiate in the onCreate method
firebaseDatabase = FirebaseDatabase.getInstance();
mRootreference = firebaseDatabase.getReference();
mChildreference = mRootreference.child("message");
MagTxt = (TextView) findViewById(R.id.msgTxt);
MagTxt.setText("Refreshing Data...");
}
@Override
protected void onStart() {
super.onStart();
mChildreference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String Message = dataSnapshot.getValue(String.class);
MagTxt.setText(Message);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
希望有帮助。您是否在项目根文件夹中添加了google-services.json?是的,在project和app folder中都添加了。然后您可以在应用程序的
onCreate()
中尝试此FirebaseApp.initializeApp(this)
。但是如果没有它,它应该可以工作。似乎initializeapp被删除了,我使用了getinstance()来代替它好了,开始工作了,json文件之间有一个空格,删除了空格一切正常你在项目根级文件夹中添加了google-services.json了吗?是的,在project和app Folder中都添加了,然后您可以在应用程序的onCreate()
中尝试此FirebaseApp.initializeApp(this)
。但是如果没有它,它应该可以工作。似乎initializeapp已经被删除了,我使用了getinstance()来代替它好了,开始工作了,json文件之间有一个空格,删除了空格一切都很好我不这么认为,无论如何,请让我检查一下,相同的结果:(好的,开始工作了,json文件中间有一个空格,删除了空格一切都很好我不这么认为,无论如何,让我检查一下,相同的结果:(好的,开始工作了,json文件中间有一个空格,删除了空格一切都很好