Android应用程序崩溃,原因是firebase“ java.lang.RuntimeException:无法实例化活动ComponentInfo”

时间:2019-01-22 15:23:42

标签: java android firebase google-cloud-firestore

当我将FireBase SDK添加到我的Android Studio项目时,应用程序开始崩溃。

有MainActivity Java代码:

  //import ...

public class MainMenu extends AppCompatActivity {
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    Button close = findViewById(R.id.button);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu);
        close.setOnClickListener(mCorkyListener);
    }

    private View.OnClickListener mCorkyListener = new View.OnClickListener() {
        public void onClick(View v) {
            Map<String, Object> user = new HashMap<>();
            user.put("first", "Ada");
            user.put("last", "Lovelace");
            user.put("born", 1815);

            db.collection("users")
                    .add(user)
                    .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                        private static final String TAG = "DocSnippets" ;

                        @Override
                        public void onSuccess(DocumentReference documentReference) {
                            Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        private static final String TAG = "DocSnippets" ;

                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.w(TAG, "Error adding document", e);
                        }
                    });
        }
    };
    }

以下是活动xml代码(非常简短):

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainMenu">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="148dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="148dp"
        android:layout_marginBottom="264dp"
        android:text="@string/send"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0" />
</android.support.constraint.ConstraintLayout>

以下是错误消息日志:

  

java.lang.RuntimeException:无法实例化活动   ComponentInfo {news.com.zed.vegenews / news.com.zed.vegenews.MainMenu}:   java.lang.NullPointerException:尝试调用虚拟方法   上的“ android.view.Window $ Callback android.view.Window.getCallback()”   空对象引用致命异常:主过程:   news.com.zed.vegenews,PID:9471 java.lang.RuntimeException:无法   实例化活动   ComponentInfo {news.com.zed.vegenews / news.com.zed.vegenews.MainMenu}:   java.lang.NullPointerException:尝试调用虚拟方法   上的“ android.view.Window $ Callback android.view.Window.getCallback()”   空对象引用位于   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2843)     在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)     在   android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)     在   android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)     在   android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)     在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808)     在android.os.Handler.dispatchMessage(Handler.java:106)   android.os.Looper.loop(Looper.java:193)在   android.app.ActivityThread.main(ActivityThread.java:6669)在   java.lang.reflect.Method.invoke(本机方法)位于   com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)     在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)   原因:java.lang.NullPointerException:尝试调用虚拟   方法'android.view.Window $ Callback   android.view.Window.getCallback()'上的空对象引用   android.support.v7.app.AppCompatDelegateImpl。(AppCompatDelegateImpl.java:249)     在   android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)     在   android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)     在   android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)     在news.com.zed.vegenews.MainMenu。(MainMenu.java:21)在   java.lang.Class.newInstance(本机方法),位于   android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)     在   android.support.v4.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43)     在android.app.Instrumentation.newActivity(Instrumentation.java:1215)     在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2831)     ...还有11个

Firebase SDK已正确安装。我不知道为什么它不起作用。我已经尝试过重新制作一个项目,但是问题仍然没有解决。

UPD。新的logcat

  

java.lang.RuntimeException:无法启动活动ComponentInfo {news.com.zed.vegenews / news.com.zed.vegenews.MainMenu}:   java.lang.NullPointerException:尝试调用虚拟方法'void   android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'   在空对象上引用FATAL EXCEPTION:主过程:   news.com.zed.vegenews,PID:12705 java.lang.RuntimeException:无法   开始活动   ComponentInfo {news.com.zed.vegenews / news.com.zed.vegenews.MainMenu}:   java.lang.NullPointerException:尝试调用虚拟方法'void   android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'   在一个空对象引用上   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)     在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)     在   android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)     在   android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)     在   android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)     在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808)     在android.os.Handler.dispatchMessage(Handler.java:106)   android.os.Looper.loop(Looper.java:193)在   android.app.ActivityThread.main(ActivityThread.java:6669)在   java.lang.reflect.Method.invoke(本机方法)位于   com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)     在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)   原因:java.lang.NullPointerException:尝试调用虚拟   方法“无效”   android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'   在一个空对象引用上   news.com.zed.vegenews.MainMenu.onCreate(MainMenu.java:28)在   android.app.Activity.performCreate(Activity.java:7136)在   android.app.Activity.performCreate(Activity.java:7127)在   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)     在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)     ...还有11个

已更新。 2:编辑过的Java代码(实际上是先前Upd中的logcat。):

public class MainMenu extends AppCompatActivity {
    private FirebaseFirestore db;
    private Button close;
//...
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu);
        db = FirebaseFirestore.getInstance();
        close = findViewById(R.id.button);
        close.setOnClickListener(mCorkyListener);
    }


    }

0 个答案:

没有答案
相关问题