android studio java.lang.nullpointerexception异常:

czfnxgou  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(451)

我有几个问题。
由于nullpointerexception,应用程序未运行。
错误内容:由以下原因引起:java.lang.nullpointerexception:尝试对空对象引用调用虚拟方法“void androidx.recyclerview.widget.recyclerview.setlayoutmanager(androidx.recyclerview.widget.recyclerview$layoutmanager)”
活动.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>

无法上载firebase的实时数据库。
请参考下图。

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

2izufjch

2izufjch1#

你的代码有几个地方出了问题。首先是你的 DatabaseReference 不引用firebase中的子级。

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

参考:https://firebase.google.com/docs/database/android/read-and-write
然后,您可以使用此子引用并使用firebaseui for realtime数据库来提供一种更简单的方法来将您的子对象附加到 RecyclerView . 要了解如何实现这一点,请参阅以下内容:https://firebaseopensource.com/projects/firebase/firebaseui-android/database/readme/
在创建 FirebaseRecyclerOptions ,创建 FirebaseRecyclerAdapter 并覆盖 onCreateViewHolder() 以及 onBindViewHolder() 对于您自己的实现。
然后设置 FirebaseRecyclerAdapter 作为循环器视图的适配器,它将开始读取数据。
对于你的 Realtime Database 如果为空,请尝试导入 JSON firebase控制台中包含数据的文件。

相关问题