Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突_Java_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Java com.google.firebase.database.DatabaseException:发现两个getter或字段的属性:user\u name的大小写敏感度冲突

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

此代码在从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 {

    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按上述方式更改文件名。但更改数据库中所有字段的名称可能会让人非常痛苦,不是吗?是的,会的。你又对了,道格。答案变了。再次感谢你