Почему мой ValueEventListener не работает? - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь прочитать значения из базы данных Firebase в реальном времени, но ничего не происходит. Я не могу выяснить, что не так с моим кодом. Я установил правила соответственно. Ниже приведен код в MainActivity.java

package com.borah.manjit.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

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.ValueEventListener;


public class MainActivity extends AppCompatActivity {
    String TAG="mn";
    TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference().child("Games");
        tv=findViewById(R.id.tv);

        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String s=dataSnapshot.child("game1").getValue(String.class);
                tv.setText(s);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException());
            }
        });

    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    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=".MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Вот данные в моей базе данных

Правила базы данных установлены следующим образом

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Разве текст textview не должен быть установлен на "Крикет"?

Вот так выглядит мой журнал

09-10 13: 34: 52,854 23293-23293 / com.borah.manjit.myapplication D / mn: https://myapplication6 -55473.firebaseio.com / Игры 09-10 13: 34: 59.184 23293-23293 / com.borah.manjit.myapplication W / mn: Не удалось прочитать значение. com.google.firebase.database.DatabaseException: ошибка базы данных Firebase: в доступе отказано на com.google.firebase.database.DatabaseError.toException (неизвестный источник) на com.borah.manjit.myapplication.MainActivity $ 1.onCancelled (MainActivity.java:40) на com.google.android.gms.internal.zzegf.zza (неизвестный источник) на com.google.android.gms.internal.zzehy.zzbyc (неизвестный источник) на com.google.android.gms.internal.zzeig.run (неизвестный источник) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:159) на android.app.ActivityThread.main (ActivityThread.java:5461) в java.lang.reflect.Method.invoke (родной метод) в java.lang.reflect.Method.invoke (Method.java:372) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:964) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:759)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...