#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
Я создаю этот проект, и я не могу показать свои данные и выполнить поиск серийного номера в firebase, нужна любая помощь, чтобы узнать, в чем проблема. Я пытаюсь и пытаюсь просмотреть все учебные пособия по firebase и не могу найти ответ.
Я сохраняю данные следующим образом в Firebase:
Это код Java:
public class Search_For_lost extends AppCompatActivity {
TextView search_input;
Button search_btn;
TextView resu<
DatabaseReference reff;
Query query;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search__for_lost);
search_input=(EditText)findViewById(R.id.search_input);
result=(TextView) findViewById(R.id.Result_list_view);
search_btn=(Button)findViewById(R.id.search_button);
reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
search_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
Query query=reff.child("Database").orderByChild("Users").equalTo("serial");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
String username=snapshot.child("name").getValue().toString();
String serial=snapshot.child("serial").getValue().toString();
Toast.makeText(getApplicationContext(),username "" serial, Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(Search_For_lost.this, "Serial is not avaliable", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
Это мой файл Xml-макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Search_For_lost">
<EditText
android:id="@ id/search_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/input_design"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:hint="Search for Serial Number.."
android:textSize="22sp"
android:padding="15dp"
android:layout_marginTop="100dp"
android:gravity="center" />
<Button
android:id="@ id/search_button"
android:layout_width="match_parent"
android:background="@drawable/buttons"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:gravity="center"
android:text="Search.."
android:textSize="25sp"
android:layout_below="@ id/search_input"
android:layout_marginTop="70dp"/>
<TextView
android:id="@ id/Result_list_view"
android:layout_width="match_parent"
android:textSize="20dp"
android:gravity="center"
android:layout_height="350dp"
android:layout_below="@ id/search_button"
android:layout_marginTop="30dp"/>
</RelativeLayout>
Я не могу решить эту проблему, и каждый раз, когда я ее запускаю, она недоступна для тостов.
Комментарии:
1. почему вы несколько раз ссылались на «Базу данных» и «Пользователей» в search_btn при методе click
2. Потому что я делаю это для поиска серийного номера… если вы видите какие-либо проблемы, сообщите мне
3. Переполнение стека — заведомо неэффективный интерактивный отладчик. Если вы запустите этот код в отладчике и установите точки останова в каждой строке, какая первая строка не выполняет то, что вы ожидаете от нее?
4. Вы решили проблему? Пожалуйста, ответьте с помощью @AlexMamo
Ответ №1:
У вас ошибка в запросе. Вместо этого
reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
Query query=reff.child("Database").orderByChild("Users").equalTo("serial");
используйте это
reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
Query query=reff.orderByChild("serial").equalTo("(here put the serial that you are searching about)");
Бессмысленно использовать запрос и не знать никаких данных узла
Комментарии:
1. я создаю методы для поиска, создающие строку, и я использую query .orderbychild(«здесь дочерний элемент»).startat().endat()
2. ОК. теперь, когда ваш запрос хорош, получите нужные вам данные. Просто отметьте мой ответ как правильный.