java - 发现两个属性区分大小写冲突的 getter 或字段:uid
问题描述
我正在尝试通过用户名搜索用户,我添加了搜索栏、列表视图、适配器和所有这些,但我遇到的问题是当我在搜索字段中输入用户名时出现此错误“找到两个 getter 或属性的区分大小写冲突的字段:uid”,我不知道如何解决它。这是我的 Logcat
2020-03-22 08:55:55.414 23924-23924/com.example.logindesign E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.logindesign, PID: 23924
com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: uid
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.addProperty(com.google.firebase:firebase-database@@19.2.1:557)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@19.2.1:488)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@19.2.1:329)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@19.2.1:430)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@19.2.1:231)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@19.2.1:79)
at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@19.2.1:203)
at com.example.logindesign.SearchActivity$2.onDataChange(SearchActivity.java:85)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.2.1:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
这是 SearchActivity 的代码
package com.example.logindesign;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
public class SearchActivity extends AppCompatActivity {
private static final String TAG = "SearchActivity";
List<Users> mUsers;
EditText search_users, mSearchParam;
UserListAdapter mAdapter;
ListView listView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_view);
Log.d(TAG, "OnCreate: Started.");
mSearchParam = findViewById(R.id.editTextSearch);
listView = findViewById(R.id.listview);
search_users = findViewById(R.id.search_user);
initTextListener();
}
private void initTextListener(){
Log.d(TAG, "initTextListener: initalizing");
mUsers = new ArrayList<>();
mSearchParam.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String text = mSearchParam.getText().toString().toLowerCase(Locale.getDefault());
SearchForMatch(text);
}
});
}
private void SearchForMatch (String Keyword){
Log.d(TAG, "search for match: " + Keyword);
mUsers.clear();
if (Keyword.length() == 0){
} else {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child(getString(R.string.users)).orderByChild(getString(R.string.username)).equalTo(Keyword);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d(TAG, "Ondatachange: found user:" + Objects.requireNonNull(singleSnapshot.getValue(Users.class)).toString());
mUsers.add(singleSnapshot.getValue(Users.class));
UpdateUsersList();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
private void UpdateUsersList(){
Log.d(TAG, "UpdateUsersList: updating users list");
mAdapter = new UserListAdapter(SearchActivity.this, R.layout.model, mUsers);
listView.setAdapter(mAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "OnItemClick : selected user: " + mUsers.get(position).toString());
}
});
}
}
这是Users.java
package com.example.logindesign;
import com.google.firebase.database.Exclude;
public class Users {
public String fullName;
public String mUserName;
public String email;
public String mobileNumber;
public String Uid;
public Users() {
}
public Users(String fullName, String mUserName, String email, String mobileNumber, String uid) {
this.fullName = fullName;
this.mUserName = mUserName;
this.email = email;
this.mobileNumber = mobileNumber;
Uid = uid;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getmUserName() {
return mUserName;
}
public void setmUserName(String mUserName) {
this.mUserName = mUserName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
public String getUid() {
return Uid;
}
public void setUid(String uid) {
Uid = uid;
}
}
解决方案
推荐阅读
- python - 在 Keras 中使用 tf.metrics?
- python - 用python摆一段时间
- r - 如何编写一个函数来获得在黄土光滑中产生最大 Y 的 x 值?
- php - 从 URL 中的 $_GET 检索变量时未定义的索引
- java - Spring Hibernate - 无法更新自我加入的多对多实体
- android - 优雅的数字按钮库不同步
- windows - 如何在小斗士2(LF2)中解析dat文件
- ios - UITabBarController 内的 UICollectionView
- c# - C# 简单的正则表达式名称组捕获
- python - 使用 Keras 进行二元分类时,测试损失不会改善