2017-12-25 7 views
0

firebaseデータベースからログインしたユーザーの名前を取得し、アンドロイドのデフォルトイメージの下にナビゲーションドロワーのヘッダーを配置しようとしています。 しかし、私がそうしようとすると、アプリケーションがクラッシュし、アクティビティが起動します。私は 単純なテキストビューでは、それが動作しますが、動作しますが、ナビゲーションヘッダー内の名前を更新しようとすると失敗し、クラッシュする名前をretrivingしようとしました。このことをどうやって行うのか。ナビゲーションドロワー(Android)でのデータフェッチ

myRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      String name = (String) dataSnapshot.child("users").child(userID).child("name").getValue(); 

      outputName.setText(name); 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

これは私の名前を取得するためのコードです。私は名前をトーストしようとすると動作しますが、ヘッダー内の値は更新されておらず、一般的にアプリケーションのクラッシュが発生することに注意してください。

<de.hdodenhof.circleimageview.CircleImageView 
     android:id="@+id/userProfileImage" 
     android:layout_width="100dp" 
     app:civ_border_width="4dp" 
     app:civ_border_color="#fff" 
     android:layout_height="100dp" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:layout_centerHorizontal="true" 
     android:src="@drawable/profile_default_image"/> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="App User" 
     android:id="@+id/current" 
     android:layout_below="@+id/userProfileImage" 
     android:textAlignment="center"/> 

これは私のXMLコードです。

enter image description here

私は、ユーザー名と丸で囲まれた領域を更新します。

+1

以下のようにTextViewにキャストするためにあなたがかもしれない原因あなたのTextViewのnullにですここにあなたのログを表示します –

答えて

1

それは

View header=navigationView.getHeaderView(0); 
outputName = (TextView)header.findViewById(R.id.current); 
関連する問題