Java 尝试在使用回收器视图时对空对象引用调用虚拟方法

Java 尝试在使用回收器视图时对空对象引用调用虚拟方法,java,android,android-studio,android-recyclerview,firebaseui,Java,Android,Android Studio,Android Recyclerview,Firebaseui,我是初学者应用程序开发人员,尝试创建聊天应用程序。该应用程序启动平稳,但当我想在“回收器”视图中显示所有注册用户时,应用程序崩溃。它没有显示任何错误,但应用程序仍会崩溃,当注释掉错误时,只会转到下一行。任何帮助都将不胜感激 Logcat 2020-11-23 10:38:39.697 4907-4907/com.example.decide_o E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.decide_o, P

我是初学者应用程序开发人员,尝试创建聊天应用程序。该应用程序启动平稳,但当我想在“回收器”视图中显示所有注册用户时,应用程序崩溃。它没有显示任何错误,但应用程序仍会崩溃,当注释掉错误时,只会转到下一行。任何帮助都将不胜感激

Logcat

2020-11-23 10:38:39.697 4907-4907/com.example.decide_o E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.decide_o, PID: 4907
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.decide_o/com.example.decide_o.AllUsers}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
        at com.example.decide_o.AllUsers.onCreate(AllUsers.java:38)
        at android.app.Activity.performCreate(Activity.java:6975)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6541) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
所有用户

public class AllUsers extends AppCompatActivity {
    private RecyclerView nuserlist;
    private DatabaseReference nUserDatabase;
    private LinearLayoutManager nlayoutmanager;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        nUserDatabase=FirebaseDatabase.getInstance().getReference().child("Users");
        nlayoutmanager=new LinearLayoutManager(this);
        nuserlist = (RecyclerView) findViewById(R.id.userlist);
        nuserlist.setHasFixedSize(true);
        nuserlist.setLayoutManager(nlayoutmanager);
    }

    @Override
    protected void onStart() {
        super.onStart();
       FirebaseRecyclerAdapter<Users,UsersViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
                Users.class,
                R.layout.single_users,
                UsersViewHolder.class,
                nUserDatabase
        ) {
            @Override
            protected void populateViewHolder(UsersViewHolder usersViewHolder, Users users, int i) {
                usersViewHolder.setName(users.getName());
            }
        };
        nuserlist.setAdapter(firebaseRecyclerAdapter);
    }
    public static class UsersViewHolder extends RecyclerView.ViewHolder{
        View nView;
        public UsersViewHolder(@NonNull View itemView) {
            super(itemView);
            nView=itemView;

        }

        public void setName(String name) {
            TextView nameview=(TextView)nView.findViewById(R.id.single_username);
            nameview.setText(name);
        }
    }
}
公共类AllUsers扩展了AppCompative活动{
私人回收站;
私有数据库参考nUserDatabase;
私人直线酒店经理酒店经理;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
nUserDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”);
nlayoutmanager=新的LinearLayoutManager(此);
nuserlist=(RecyclerView)findviewbyd(R.id.userlist);
nuserlist.setHasFixedSize(true);
nuserlist.setLayoutManager(nlayoutmanager);
}
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(
用户.class,
R.layout.single_用户,
UsersViewHolder.class,
nUserDatabase
) {
@凌驾
受保护的void populateViewHolder(UsersViewHolder UsersViewHolder,Users Users,int i){
usersViewHolder.setName(users.getName());
}
};
nuserlist.setAdapter(firebaseRecyclerAdapter);
}
公共静态类UsersViewHolder扩展了RecyclerView.ViewHolder{
查看nView;
public UsersViewHolder(@NonNull View itemView){
超级(项目视图);
nView=项目视图;
}
公共void集合名(字符串名){
TextView nameview=(TextView)nView.findViewById(R.id.single_用户名);
nameview.setText(name);
}
}
}
xml


这里的问题是您尚未设置内容视图

在onCreate方法中添加此行:-
setContentView(R.layout.your_activity_xml)

在调用
super.oncreate
之后


如果您没有分配内容视图,则不会确定从何处获取recyclerView:-
nuserlist=(recyclerView)findViewById(R.id.userlist)

我想您需要这样设置内容视图:-
setContentView(R.layout.your_activity_xml)super.onCreate
方法之后添加code>。由于这一行丢失,您的recylerview从未被分配给任何它给出空指针的对象exception@AppDev. 工作人员用简单的话来说,活动没有可显示的布局。
<RelativeLayout 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=".AllUsers">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/userlist"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>