Android void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening();关于空对象引用
您好,我在onStart上调用adpater时遇到此错误。有人知道我如何修复它吗?事先非常感谢。欢迎提供一切帮助。 我一直在努力寻找解决方案,但我所做的一切都导致了同样的错误。我不知道还能做什么 调用adapter.startListening()时出错;在onStart中 错误logcat:>Android void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening();关于空对象引用,android,Android,您好,我在onStart上调用adpater时遇到此错误。有人知道我如何修复它吗?事先非常感谢。欢迎提供一切帮助。 我一直在努力寻找解决方案,但我所做的一切都导致了同样的错误。我不知道还能做什么 调用adapter.startListening()时出错;在onStart中 错误logcat:>由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.firebase.ui.database.FirebaseRecyclerA
由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening()”
public class FindFriendsActivity extends AppCompatActivity
{
FirebaseRecyclerAdapter<Contacts, FindFriendViewHolder> adapter;
private Toolbar mToolbar;
private RecyclerView FindFriendsRecyclerList;
private DatabaseReference UsersRef;
private SearchView searchView;
private Query query;
private FirebaseRecyclerOptions<Contacts> options;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_friends);
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
FindFriendsRecyclerList = (RecyclerView) findViewById(R.id.find_friends_recycler_list);
FindFriendsRecyclerList.setLayoutManager(new LinearLayoutManager(this));
mToolbar = (Toolbar) findViewById(R.id.find_friends_toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Find Friends");
searchView = findViewById(R.id.materialSearchPrincipal);
}
private void fetch(Query query) {
FirebaseRecyclerOptions<Contacts > options =
new FirebaseRecyclerOptions.Builder<Contacts>()
.setQuery(query, new SnapshotParser<Contacts>() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@NonNull
@Override
public Contacts parseSnapshot(@NonNull DataSnapshot snapshot) {
return new Contacts(Objects.requireNonNull(snapshot.child("name").getValue()).toString(),
Objects.requireNonNull(snapshot.child("status").getValue()).toString());
}
})
.build();
adapter = new FirebaseRecyclerAdapter<Contacts, FindFriendViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull FindFriendViewHolder holder, final int position, @NonNull Contacts model)
{
holder.userName.setText(model.getName());
holder.userStatus.setText(model.getStatus());
Picasso.get().load(model.getImage()).placeholder(R.drawable.profile_image).into(holder.profileImage);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
String visit_user_id = getRef(position).getKey();
Intent profileIntent = new Intent(FindFriendsActivity.this, ProfileActivity.class);
profileIntent.putExtra("visit_user_id", visit_user_id);
startActivity(profileIntent);
}
});
}
@NonNull
@Override
public FindFriendViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
{
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
FindFriendViewHolder viewHolder = new FindFriendViewHolder(view);
return viewHolder;
}
};
adapter.startListening();
FindFriendsRecyclerList.setAdapter(adapter);
}
@Override
protected void onStart()
{
super.onStart();
adapter.startListening();
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
Query query = FirebaseDatabase.getInstance().getReference().child("Users");
fetch(query);
}
public static class FindFriendViewHolder extends RecyclerView.ViewHolder
{
TextView userName, userStatus;
CircleImageView profileImage;
public FindFriendViewHolder(@NonNull View itemView)
{
super(itemView);
userName = itemView.findViewById(R.id.user_profile_name);
userStatus = itemView.findViewById(R.id.user_status);
profileImage = itemView.findViewById(R.id.users_profile_image);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
searchView.setOnQueryTextListener(new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("Users").orderByChild("name").equalTo(s);
if(s.equals("")){
query = FirebaseDatabase.getInstance()
.getReference()
.child("Users");
}
fetch(query);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
公共类FindFriendsActivity扩展了AppCompatActivity
{
FirebaseRecyclerAdapter适配器;
私有工具栏mToolbar;
私人回收站查看FindFriendsRecyclerList;
私有数据库引用用户sref;
私有搜索视图搜索视图;
私有查询;
私人FirebaseRecyclerOptions选项;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u find\u friends);
UsersRef=FirebaseDatabase.getInstance().getReference().child(“用户”);
FindFriendsRecyclerList=(RecyclerView)findViewById(R.id.find\u friends\u recycler\u list);
setLayoutManager(新的LinearLayoutManager(this));
mToolbar=(工具栏)findviewbyd(R.id.find\u friends\u工具栏);
设置支持操作栏(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle(“查找朋友”);
searchView=findViewById(R.id.materialSearchPrincipal);
}
私有void获取(查询){
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(查询,新快照解析器(){
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
@非空
@凌驾
公共联系人解析快照(@NonNull DataSnapshot snapshot){
返回新联系人(Objects.requirennoull(snapshot.child(“name”).getValue()).toString(),
Objects.requirennull(snapshot.child(“status”).getValue().toString());
}
})
.build();
适配器=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的无效onBindViewHolder(@NonNull FindFriendViewHolder,最终整数位置,@NonNull联系人模型)
{
holder.userName.setText(model.getName());
holder.userStatus.setText(model.getStatus());
Picasso.get().load(model.getImage()).placeholder(R.drawable.profile\u image).into(holder.profileImage);
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图)
{
字符串visit_user_id=getRef(position).getKey();
Intent profileIntent=新的Intent(FindFriendsActivity.this,ProfileActivity.class);
profileIntent.putExtra(“访问用户id”,访问用户id);
星触觉(意向);
}
});
}
@非空
@凌驾
public FindFriendViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i)
{
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.users\u display\u布局,viewGroup,false);
FindFriendViewHolder=新的FindFriendViewHolder(视图);
返回视图持有者;
}
};
adapter.startListening();
setAdapter(适配器);
}
@凌驾
受保护的void onStart()
{
super.onStart();
adapter.startListening();
UsersRef=FirebaseDatabase.getInstance().getReference().child(“用户”);
Query Query=FirebaseDatabase.getInstance().getReference().child(“用户”);
获取(查询);
}
公共静态类FindFriendViewHolder扩展了RecyclerView.ViewHolder
{
TextView用户名、userStatus;
圆形图像查看轮廓图像;
public findFriendView文件夹(@NonNull View itemView)
{
超级(项目视图);
userName=itemView.findviewbyd(R.id.user\u profile\u name);
userStatus=itemView.findviewbyd(R.id.user\u status);
profileImage=itemView.findviewbyd(R.id.users\u profile\u image);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单)
{
super.onCreateOptions菜单(菜单);
searchView.setOnQueryTextListener(新的androidx.appcompat.widget.searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串s){
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串s){
Query Query=FirebaseDatabase.getInstance()
.getReference()
.child(“用户”).orderByChild(“名称”).equalTo(s);
如果(s.等于(“”){
query=FirebaseDatabase.getInstance()
.getReference()
.儿童(“用户”);
}
获取(查询);
返回false;
}
});
返回super.onCreateOptions菜单(菜单);
}
}
您的适配器在fetch函数中初始化,但在adapter.startListening()之后调用fetch函数您的onStart
方法中的code>,因为它未初始化。y