【问题标题】:Unable to start activity ComponentInfo and not showing data to recyclerview无法启动活动 ComponentInfo 并且不向 recyclerview 显示数据
【发布时间】:2021-12-01 02:49:51
【问题描述】:

我正在尝试从我的 Firestore 数据库中获取数据,但出现此错误:

2021-10-12 19:01:18.585 18859-18859/com.dharmik953.mynotes_firebase E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.dharmik953.mynotes_firebase, PID: 18859
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dharmik953.mynotes_firebase/com.dharmik953.mynotes_firebase.HomePage}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.firestore.CollectionReference com.google.firebase.firestore.FirebaseFirestore.collection(java.lang.String)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.firestore.CollectionReference com.google.firebase.firestore.FirebaseFirestore.collection(java.lang.String)' on a null object reference
        at com.dharmik953.mynotes_firebase.HomePage.onCreate(HomePage.java:66)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)

我认为我的任何布局之一或其他我试图在其他站点找到解决方案但没有任何更改的错误仍然存​​在问题。我正在学习 Firestore 数据库,这是我的第一个项目,我将我的项目推送到 git hub 上并共享它的链接。请帮我解决这个问题。

firestore 数据库:-

"notes"-> uid-> "myNotes"-> noteid-> "title","content".

Github 链接:-

https://github.com/dharmik953/MyNotes-firebase

{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);

        binding = ActivityHomePageBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        datalist=new ArrayList<>();
        recyclerView = findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);
        layoutManager2 = new LinearLayoutManager(getApplicationContext());
//        layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager2);
        recyclerView.setAdapter(adapter);

        firestore.collection("notes").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                List<DocumentSnapshot> list=queryDocumentSnapshots.getDocuments();
                for(DocumentSnapshot d:list)
                {
                    firebaseModel obj=d.toObject(firebaseModel.class);
                    datalist.add(obj);
                }
                adapter.notifyDataSetChanged();
            }
        });

        firestore = FirebaseFirestore.getInstance();

        addNotes = findViewById(R.id.add_button);

        Objects.requireNonNull(getSupportActionBar()).setTitle("Notes");

        addNotes.setOnClickListener(v -> startActivity(new Intent(HomePage.this,addNotes.class)));

    }

【问题讨论】:

    标签: java android firebase google-cloud-platform google-cloud-firestore


    【解决方案1】:

    您收到以下错误:

    原因:java.lang.NullPointerException:尝试在空对象上调用虚拟方法 'com.google.firebase.firestore.CollectionReference com.google.firebase.firestore.FirebaseFirestore.collection(java.lang.String)'参考

    因为您在初始化之前尝试使用firestore 对象。要解决此异常,请移动以下代码行:

    firestore = FirebaseFirestore.getInstance();
    

    就在之前:

    firestore.collection("notes").get().addOnSuccessListener(/* ... /*);
    

    你的错误就会消失。

    【讨论】:

    • 我来到这里正确阅读了 1000 多个解决方案,当在另一条上方添加一行时,它起作用了!谢谢,挽救了一条生命;)(y)
    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 2013-11-14
    • 2014-05-12
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多