Java com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突
此代码在从Firebase数据库提取数据时出错Java com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,此代码在从Firebase数据库提取数据时出错 排队 UsersForChat UsersForChat=dataSnapshot.getValue(UsersForChat.class) com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突 public class Users_Display_For_Chat_Activity extends AppCompatActivity
排队
UsersForChat UsersForChat=dataSnapshot.getValue(UsersForChat.class)代码>
com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突
public class Users_Display_For_Chat_Activity extends AppCompatActivity {
FirebaseAuth firebaseAuth;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ArrayList<UsersForChat> users = new ArrayList<UsersForChat>();
RecyclerView recyclerView;
UsersDispalyActivtyRecyclerViewAdapter rvadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_);
firebaseAuth = FirebaseAuth.getInstance();
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference();
rvadapter = new UsersDispalyActivtyRecyclerViewAdapter(this,users);
recyclerView = (RecyclerView) findViewById(R.id.rv_UsersForChat);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(rvadapter);
retrivedata();
}
public void retrivedata()
{
databaseReference.child("Users").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
UsersForChat usersForChat = dataSnapshot.getValue(UsersForChat.class);
users.add(usersForChat);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
如果您正处于项目的开始阶段,并且可以对数据库进行更改,我建议您根据需要更改所有字段名、setter和getter的小写
此外,您需要将所有字段的可见性从默认访问
更改为私有访问
,如下所示:
private String userName, userPhoneNo, userProfilePicUrl;
public void setUserEmail(String userEmail) {this.userEmail = userEmail;}
public String getUserEmail() {return userEmail;}
public String getUserPhoneNo() {return userPhoneNo;}
public void setUserPhoneNo(String userPhoneNo) {this.userPhoneNo = userPhoneNo;}
public String getUserProfilePicUrl() {return userProfilePicUrl;}
public void setUserProfilePicUrl(String userProfilePicUrl) {this.userProfilePicUrl = userProfilePicUrl;}
二传手和传接手都是这样的:
private String userName, userPhoneNo, userProfilePicUrl;
public void setUserEmail(String userEmail) {this.userEmail = userEmail;}
public String getUserEmail() {return userEmail;}
public String getUserPhoneNo() {return userPhoneNo;}
public void setUserPhoneNo(String userPhoneNo) {this.userPhoneNo = userPhoneNo;}
public String getUserProfilePicUrl() {return userProfilePicUrl;}
public void setUserProfilePicUrl(String userProfilePicUrl) {this.userProfilePicUrl = userProfilePicUrl;}
正如您可能看到的,只有setter和getter具有公共访问权限
如果无法更改数据库中字段的名称,则只需更改文件的可见性。创建POJO时,通常会将所有字段设置为私有,以便仅通过getter和setter强制访问
private String User_Name,User_PhoneNo,User_Profile_Pic_Url;
另外,传统上,在方法名和成员中不使用下划线,只使用大小写。但我想这取决于您。如果数据库字段名为“user\u name”,则这将不起作用。Firebase SDK不知道如何将用户名映射到setUserName,也不知道如何建立这种关联。是的,你是对的。据报道,我建议Sharad Dadhich按上述方式更改文件名。但更改数据库中所有字段的名称可能会让人非常痛苦,不是吗?是的,会的。你又对了,道格。答案变了。再次感谢你