2017-02-20 14 views
0

Я просто пытаюсь получить данные в формате JSON из базы данных Firebase в реальном времени и отображать его на текст зренияНевозможно создать экземпляр активности ComponentInfo в Firebase

и я не знаю, почему это происходит, добавили GMS, прикладные модули в Gradle как проектный уровень и уровень модуля, это мой MainActivity.java Извините за добавление этого в JSSnippet

Любая помощь будет оценена

package com.example.halo.firebase; 
 

 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.widget.TextView; 
 

 
import com.google.firebase.FirebaseApp; 
 
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 { 
 
    private TextView MagTxt; 
 
    private FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance(); 
 
    private DatabaseReference mRootreference = firebaseDatabase.getReference(); 
 
    private DatabaseReference mChildreference = mRootreference.child("message"); 
 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     //FirebaseApp.initializeApp(this); 
 
     setContentView(R.layout.activity_main); 
 
     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) { 
 

 
     } 
 
    }); 
 

 

 
    } 
 
}

FATAL EXCEPTION: main 
 
                      Process: com.example.halo.firebase, PID: 18428 
 
                      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.halo.firebase/com.example.halo.firebase.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.halo.firebase. Make sure to call FirebaseApp.initializeApp(Context) first. 
 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2567) 
 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
 
                       at android.app.ActivityThread.-wrap12(ActivityThread.java) 
 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
 
                       at android.os.Looper.loop(Looper.java:154) 
 
                       at android.app.ActivityThread.main(ActivityThread.java:6126) 
 
                       at java.lang.reflect.Method.invoke(Native Method) 
 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
 
                      Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.halo.firebase. Make sure to call FirebaseApp.initializeApp(Context) first. 
 
                       at com.google.firebase.FirebaseApp.getInstance(Unknown Source) 
 
                       at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source) 
 
                       at com.example.halo.firebase.MainActivity.<init>(MainActivity.java:16) 
 
                       at java.lang.Class.newInstance(Native Method) 
 
                       at android.app.Instrumentation.newActivity(Instrumentation.java:1079) 
 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2557) 
 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
 
                       at android.app.ActivityThread.-wrap12(ActivityThread.java)  
 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
 
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
 
                       at android.os.Looper.loop(Looper.java:154)  
 
                       at android.app.ActivityThread.main(ActivityThread.java:6126)  
 
                       at java.lang.reflect.Method.invoke(Native Method)  
 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

+0

Вы добавили google-services.json в папку вашего корневого каталога проекта? –

+0

yep, добавленный как в папку проекта, так и в приложение – Venky

+0

Затем вы можете попробовать этот «FirebaseApp.initializeApp (this)» в 'onCreate()' вашего приложения. Но он должен работать без него. –

ответ

2

Я думаю, что проблема в том, что вы инстанцирован ваш 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) { 

     } 
    }); 


    } 
} 

Надежда, что помогает.

+0

Я не думаю, что так, anyways lemme check – Venky

+0

Нет, тот же результат :( – Venky

+0

все в порядке, заработал, у json-файла было пространство между ними, удалено пространство все в порядке – Venky