首页 > 解决方案 > FirebaseRecyclerAdapter.startListening() 出现 NullPointerException

问题描述

我的应用程序有问题。我试图显示我的所有用户列表及其详细信息(状态、电话号码),但我不断收到 onStart 方法上的空指针异常错误。这是我的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_customer_status);


...

    }

        @Override
        protected void onStart() {
            super.onStart();
            firebaseRecyclerAdapter.startListening();
            options =
                    new FirebaseRecyclerOptions.Builder<Users>()
                            .setQuery(mUserDbase, Users.class)
                            .build();
            firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
                @NonNull
                @Override
                public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                    View view = LayoutInflater.from(parent.getContext())
                            .inflate(R.layout.activity_customer_status, parent, false);

                    return new UsersViewHolder(view);
                }

                @Override
                protected void onBindViewHolder(@NonNull UsersViewHolder usersViewHolder, int i, @NonNull Users users) {
                    usersViewHolder.setName(users.getName());
                    usersViewHolder.setPhone(users.getPhone());
                    usersViewHolder.setStatus(users.getStatus());

                }

            };
            mUserList.setAdapter(firebaseRecyclerAdapter);

        }

    @Override
    protected void onStop() {
        super.onStop();
        firebaseRecyclerAdapter.stopListening();
    }

        // View Holder Class

    public static class UsersViewHolder extends RecyclerView.ViewHolder{

        View mView;

        public UsersViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setName (String name){
            TextView userNameView = (TextView) mView.findViewById(R.id.name_text);
            userNameView.setText(name);
        }
        public void setPhone (String phone){
            TextView userNameView = (TextView) mView.findViewById(R.id.phone_text);
            userNameView.setText(phone);
        }
        public void setStatus (String status){
            TextView userNameView = (TextView) mView.findViewById(R.id.status_text);
            userNameView.setText(status);
        }

    }

}

我已经关注了这个问题:FirebaseListAdapter.startListening() 中的错误,它解释了活动生命周期的工作方式为(onCreate>onStart>onResume),因此假设(我是新手)我将启动代码放在我的firebaseRecyclerAdapter。我也按照这个问题作为指导,但它也没有帮助我。请帮忙

标签: androidfirebasefirebase-realtime-database

解决方案


firebaseRecyclerAdapter在初始化之前使用指针。

  firebaseRecyclerAdapter = new FirebaseRecyclerAdapte(){...}; 
  firebaseRecyclerAdapter.startListening();
  mUserList.setAdapter(firebaseRecyclerAdapter);

推荐阅读