Java 无法在Firebase中实例化活动组件信息

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.

我只是尝试从Firebase实时数据库中检索JSON数据,并将其显示在文本视图中

我不知道为什么会发生这种情况,在gradle中添加了gms和应用插件,包括项目级和模块级,这是我的MainActivity.java 很抱歉将此添加到JSSnippet中

任何帮助都将不胜感激

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文件中间有一个空格,删除了空格一切都很好