I am creating an application for android and I need to find a user in the database by nickname and after it is found I need to get his id. The problem is that the database does not find a user with this nickname, although there is such a user in the database and I do not understand the problem, maybe someone can tell me.
here is my code:
private SpannableString makeSpannable(String comment) //comment = "Hahdgd @aimness2"
{
Pattern pattern = Pattern.compile("[@][a-zA-Z0-9-.]+");
SpannableString spannableString = new SpannableString(comment);
Matcher matcher = pattern.matcher(spannableString);
while (matcher.find())
{
int start = matcher.start();
int end = matcher.end();
ClickableSpan span = new ClickableSpan() {
String email;
@Override
public void onClick(@NonNull View widget) {
String substr = comment.substring(start+1, end);
findUserUid(substr);
SomeUserProfileFragment someUserProfileFragment = new SomeUserProfileFragment();
Bundle args = new Bundle();
args.putString("UserData", uid);
someUserProfileFragment.setArguments(args);
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.frame_container, someUserProfileFragment)
.addToBackStack(null)
.commit();
}
};
spannableString.setSpan(span, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannableString;
}
private String findUserUid(String nick)
{
DatabaseReference db = FirebaseDatabase.getInstance().getReference("UserData");
Query query = db.orderByChild("nickname").equalTo(nick);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
uid = "" + dataSnapshot.child("uid").getValue(String.class);
}
}else
{
Log.i("hahahha", "loch");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
return uid;
}