2017-11-24 8 views
0

の下OnDataChangeの変数データを使用したい私はこのは、イベントリスナー

mDatabase.child(sharedPrefs.getString("Person_id","error")).child("pago").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       pago = Integer.valueOf(dataSnapshot.getValue().toString()); 
       Log.e("pagoono",""+pago); 



      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     Log.e("pago",""+pago); 

私はそれが0または1ですが、値に私のデータベース参照を持っている、と私はValueEventListenerを閉じた後、私はその値を使用する必要があり、そう、イムはonDataChange内の値を取得するが、私はvalue.I'mは、このメソッドは、非同期と呼ばれているので、あなたは、単にonDataChange()方法の外にその値を使用することはできません。このLog.e("pago",""+pago)

+0

試してみるhttps://stackoverflow.com/questions/39209823/setting-variable-inside-ondatachange-in-firebase-singlevalue-listener – eurosecom

答えて

0

で、その値にアクセスしようとしていることをアクセスすることはできません。これは、データベースからデータを取得する前に呼び出されることを意味します。最も簡単な方法は、その値をonDataChange()の内部でのみ使用するか、より複雑な方法は非同期の世界に潜んでその値を外部に使用することです。そのために、私の答えはHow To Get Value Async In Outside Method onDataChange()です。

関連する問題