2016-09-04 11 views
0

マイFirebaseデータベースの構造は次のとおりです。 enter image description hereアンドロイド - 指定したUIDとfirebaseからデータを取得することはできません

私は私がその鍵を持っている場合、一部のユーザーの完全な名前を取得します。

マイコード:

public class ProfileActivity extends AppCompatActivity implements View.OnClickListener { 

private FirebaseAuth firebaseAuth; 
private TextView textView; 
private Button logbutton,wantToDeliverButton,lookForButton; 
private String userName; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_profile); 
    Firebase.setAndroidContext(this);textView = (TextView)findViewById(R.id.textView2); 
    Firebase usersRef = new Firebase("https://myfirstfirebaseauth.firebaseio.com"); 
    firebaseAuth = FirebaseAuth.getInstance(); 
    if (firebaseAuth.getCurrentUser() == null){ 
     finish(); 
     startActivity(new Intent(this,LoginActivity.class)); 
    } 
    FirebaseUser user = firebaseAuth.getCurrentUser(); 
    Firebase ref = usersRef.child("User").child(user.getUid()); 
    ref.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      userName = dataSnapshot.getValue(User.class).getFullName(); 

     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 
    textView.setText("welcome "+userName); 

しかし、それはnullにのTextViewを設定します。私はtoastをonDataChange()メソッドの中に入れようとしますが、動作しません。それは方法の中に入ることさえないようです。

私がtextView.setText("welcome "+ user.getEmail());を書いていると、正確なメールが届くので、FirebaseUser user = firebaseAuth.getCurrentUser();という行は正しいです。

これを解決するにはどうすればよいですか?正しいリスナーを使用していますか?私はデータベース内の何かを変更したくないだけです。

編集:それはonCancelled(に行きます)。

+0

あなたの質問には 'アンドロイド-studio'は関係ありません。不適切なタグでスパムしないでください!タグが削除されました。 –

+0

申し訳ありませんがチームメイトは、私はあなたが使用しているもののツールは重要ではありません...スパムに – user3552460

+0

を意味アンドロイドstudio..didn'tでそれを書きました。あなたの問題に関連してタグを付けます。もし 'firebase'関連のコードで問題があるならば' firebase'タグを付けます( 'java'も本当に関連していません - ここではJava言語には何の問題もありません)そのコードを作成するために使用するツールは、あなたの質問には関係ありません。 –

答えて

2

レガシー2.5.X Firebase SDK(例:Firebase.setAndroidContext())と新しい9.X.X SDK(例:FirebaseAuth.getInstance())の機能をミックスしています。それはほぼ確実に失敗のレシピです。新しいSDKのみを使用するようにコードを再作成します。 Setup Guide is here

+0

ありがとうございました - 私がしなければならなかったのは、 'Firebase.setAndroidContext(this);' 'FirebaseDatabase.getInstance()。getReference();' – user3552460

関連する問題