繁体   English   中英

Android Studio java.lang.NullPointerException:

[英]Android Studio java.lang.NullPointerException:

我有几个问题。

  1. 由于 NullPointerException,应用程序无法运行。

Error content: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference

活动.java

import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class ContactsActivity extends AppCompatActivity {
BottomNavigationView navView;
RecyclerView myContactsList;
ImageView findPeopleBtn;

private FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
private DatabaseReference databaseReference = firebaseDatabase.getReference();

@Override
protected void onCreate(Bundle savedInstanceStage) {
    super.onCreate(savedInstanceStage);
    setContentView(R.layout.activity_contacts);

    navView = findViewById(R.id.nav_view);
    navView.setOnNavigationItemSelectedListener(navigationItemSelectedListener);

    findPeopleBtn = findViewById(R.id.find_people_btn);
    myContactsList = findViewById(R.id.contact_list);
    myContactsList.setLayoutManager(new LinearLayoutManager(getApplicationContext()));  =>error

    findPeopleBtn.setOnClickListener(v -> {
        Intent findPeopleIntent = new Intent(ContactsActivity.this,FindPeopleActivity.class);
        startActivity(findPeopleIntent);
    });
}

活动.xml

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/contact_list"
    android:layout_below="@+id/app_bar_layout_contacts"
    android:layout_above="@+id/nav_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</androidx.recyclerview.widget.RecyclerView>
  1. Firebase 的实时数据库无法上传。

请参考下图。
在此处输入图像描述

任何建议都是好的,所以请发表评论。

您的代码有几处问题。 首先,您的DatabaseReference没有引用 firebase 中的孩子。

private DatabaseReference databaseReference = firebaseDatabase.getReference().child("NameOfTheNode");

参考: https://firebase.google.com/docs/database/android/read-and-write

然后,您可以使用此子引用并使用 FirebaseUI for Realtime Database 来提供一种更简单的方法来将您的孩子附加到RecyclerView 要了解如何实现此功能,请参阅以下内容: https://firebaseopensource.com/projects/firebase/firebaseui-android/database/readme/

创建FirebaseRecyclerOptions后,创建FirebaseRecyclerAdapter并为您自己的实现覆盖onCreateViewHolder()onBindViewHolder()

然后将FirebaseRecyclerAdapter的实例设置为您的回收器视图的适配器,它将开始读取数据。

对于Realtime Database存在 null 的问题,请尝试在 Firebase 控制台中导入包含数据的JSON文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM