2017-04-08 13 views
0

私のFirebaseチャットアプリケーションでは、ユーザーがGoogle、電子メール、パスワード、またはFacebookにログインした後に、ユーザーのサインオン時にsetValueを使用してユーザー名とプロフィール写真のデータを挿入しています。次に、私のプロファイルのアクティビティで、valueEventListenerを使用してユーザーの写真とユーザーの名前を表示し、プロファイルのアクティビティでsetValueメソッドを再度使用すると更新できます。しかし、問題は、現在のデータ、ユーザーが何かコメントや投稿を投稿したすべての場所、ユーザー名とプロフィールの写真は同じままです。ユーザーがプロフィール活動で自分の情報を更新すると、データベースのすべてを更新する方法はありますか?Firebaseデータベースを更新するには

ここはデータ

StorageReference filepath = mStorageImage.child(mImageUri.getLastPathSegment()); 
filepath.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
    @Override 
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

     String downloadUri = taskSnapshot.getDownloadUrl().toString(); 

     mDatabaseUsers.child(user_id).child("name").setValue(name); 
     mDatabaseUsers.child(user_id).child("timestampjoined").setValue(timestamp); 
     mDatabaseUsers.child(user_id).child("image").setValue(downloadUri); 

     mProgress.dismiss(); 

を挿入しています方法ですその後、私のプロフィール活動で、私は

mDatabaseUser.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String timestampjoined = (String) dataSnapshot.child("timestampjoined").getValue(); 
     String profilename = (String) dataSnapshot.child("name").getValue(); 
     String profilepicture = (String) dataSnapshot.child("image").getValue(); 


     Glide.with(DDiaryProfileActivity.this).load(profilepicture) 
       .fitCenter().diskCacheStrategy(DiskCacheStrategy.ALL).into(mProfilePicture); 

     ((CollapsingToolbarLayout) findViewById(R.id.toolbar_profile)).setCollapsedTitleTextAppearance(R.style.CollapsingToolBar);; 
     ((CollapsingToolbarLayout) findViewById(R.id.toolbar_profile)).setTitle(profilename); 


     mTimeJoined.setText("Date joined : " + timestampjoined); 
     mProfileName.setText(profilename); 

どのように私は、このデータが保存されているすべての場所で更新されないデータを取得します?

答えて

1

問題は明確ではありません。より詳しく説明してください。あなたのデータベース構造を投稿してください。ちょうど子供が、たとえば、ユーザーの名前、写真、タイムスタンプなどで

user 
-userid 
    -name:username 
    -photo:url 
    -timestamp:12:30 

を言う作成し、ユーザーdetails.Alsoがこの子を更新したい場所これらの詳細を取得どこでも同じデータを取得するために

あなたのプロフィール活動で 基本的には、同じ子からすべての値をフェッチして更新することです。

+0

私はあなたの答えを読むときに私はそれを考え出した。それは私の心を開いたゲスト、はい私の間違いはちょうど1つの場所でそれを呼んでいた。私はちょうど存在するすべての場所で自分のデータを再度呼び、新しい価値を設定しました。 –

関連する問題