【问题标题】:Android Studio java.lang.NullPointerException:Android Studio java.lang.NullPointerException:
【发布时间】:2020-12-10 09:52:19
【问题描述】:

我有几个问题。

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

错误内容:原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)'

Activity.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);
    });
}

activity.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 的实时数据库无法上传。

请参考下图。

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

【问题讨论】:

  • 我的布局是activity_contacts.xml。
  • 您是否尝试在您的setLayoutManager 行中将getApplicationContext() 更改为this?
  • 我什至不应该把它改成这个。

标签: java android firebase-realtime-database


【解决方案1】:

您的代码存在一些问题。 首先,您的 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 为空的问题,请尝试在 Firebase 控制台中导入包含数据的 JSON 文件。

【讨论】:

  • 我需要更详细的解释。我是初学者……你能把代码详细的叫我吗……?
  • 你说的“给我详细的代码”是什么意思?
猜你喜欢
  • 1970-01-01
  • 2017-09-14
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2021-06-03
  • 2015-05-14
相关资源
最近更新 更多