Как исправить эту ошибку с Android и Firebase - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь написать код для переключения активности с MainActivity на SecondActivity. И в SecondActivity я инициализирую объект FirebaseFirestore в методе onCreate(). Я использую кнопку в activity_main.xml для переключения с MainActivity на SecondActivity. Однако мое приложение вылетает. Он не пошел в SecondActivity после того, как я нажал кнопку. Мне действительно нужна помощь, чтобы решить эту проблему. И мне нужно записать некоторые данные в firebase через FirebaseFirestore объект в Secondctivity.

Я думаю, что основной причиной этого сбоя является инициализация FirebaseFirestore объекта в методе onCreate(). Как только я закомментировал эту инициализацию, сбой исчез.

public class SecondActivity extends AppCompatActivity {

    EditText name;
    EditText age;
    private static final String TAG = "SecondActivity";
    FirebaseFirestore db;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second2);
        name = findViewById(R.id.name);
        age = findViewById(R.id.age);
        button = findViewById(R.id.button2);
        Toast.makeText(this, "testing", Toast.LENGTH_SHORT).show();
        db = FirebaseFirestore.getInstance();
    }
}

Ошибки следующие.

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.hw1, PID: 25341 java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.hw1 / com.example.hw1.SecondActivity}: java.lang.IllegalStateException: по умолчанию FirebaseApp не является инициализируется в этом процессе com.example.hw1. Обязательно позвони Сначала FirebaseApp.initializeApp (Context).

в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2817)

в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2892)

at android.app.ActivityThread.-wrap11 (неизвестный источник: 0)

в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1593)

на android.os.Handler.dispatchMessage (Handler.java:105)

на android.os.Looper.loop (Looper.java:164)

в android.app.ActivityThread.main (ActivityThread.java:6541)

at java.lang.reflect.Method.invoke (собственный метод)

в com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240)

at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)

Причина: java.lang.IllegalStateException: по умолчанию FirebaseApp не является инициализируется в этом процессе com.example.hw1. Обязательно позвони Сначала FirebaseApp.initializeApp (Context).

в com.google.firebase.FirebaseApp.getInstance (com.google.firebase: firebase-общий @@ 16.1.0: 245)

в com.google.firebase.firestore.FirebaseFirestore.getInstance (com.google.firebase: firebase-Firestore @@ 18.2.0: 70)

at com.example.hw1.SecondActivity.onCreate (SecondActivity.java:37)

at android.app.Activity.performCreate (Activity.java:6975)

в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1213)

в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2770)

в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2892)

at android.app.ActivityThread.-wrap11 (неизвестный источник: 0)

в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1593)

на android.os.Handler.dispatchMessage (Handler.java:105)

на android.os.Looper.loop (Looper.java:164)

в android.app.ActivityThread.main (ActivityThread.java:6541)

at java.lang.reflect.Method.invoke (собственный метод)

в com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240)

на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)

I / zygote: сбор частичного кэша кода, код = 16 КБ, данные = 20 КБ

После сбора кеша кода, код = 16 КБ, данные = 20 КБ

I / zygote: увеличение емкости кэша кода до 128 КБ. I / zygote: частичное выполнение. сбор кеша кода, код = 16 КБ, данные = 37 КБ

После сбора кеша кода, код = 16 КБ, данные = 37 КБ

Увеличение емкости кеша кода до 256 КБ

I / zygote: JIT выделил 71 КБ для скомпилированного кода void android.widget.TextView. (android.content.Context, android.util.AttributeSet, int, int)

CКомпилятор выделил 4 МБ для компиляции void android.widget.TextView. (android.content.Context, android.util.AttributeSet, int, int)

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

См. Это объяснение FirebaseApp, я не думаю, что нужно вызывать initializeApp в вашем коде, как предложено в журнале ошибок, если вы не используете другой проект Firebase.Я думаю, что проблема либо в процессе инициализации вашей программы, либо у вас неправильная конфигурация для вашего проекта, например, неверный / поврежденный файл google-services.json, неправильное имя пакета, установленное в консоли Firebase, или другие вещи, которыеможет вызвать проблемы.

0 голосов
/ 03 апреля 2019

Вам необходимо позвонить

FirebaseApp.initializeApp(Context);

до

db = FirebaseFirestore.getInstance();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...