【问题标题】:Save image into my app (into fragment) from specific user in firebase database从firebase数据库中的特定用户将图像保存到我的应用程序(到片段中)
【发布时间】:2017-11-20 19:29:33
【问题描述】:

我是 android Firebase 的新手。我正在尝试将 Firebase 数据库中的图像保存到 fragment 中的 Android 应用中。

更具体地说,我想搜索当前登录的用户的Id。找到Id后,我想获取图像字段的内容(图像是用户的孩子)并保存在我的应用程序的图像视图上。

我的主要目的是为用户创建个人资料图像。

这是我的 Firebase 数据库:

{
  "Users" : {
    "Tc2N9FA0uhTFZuMRNkRSHgiaGQ22" : {
      "imageurl" : "https://firebasestorage.googleapis.com...
      "userid" : "Tc2N9FA0uhTFZuMRNkRSHgiaGQ22"
    }
  }
}

我在应用程序中的代码是(我只显示我尝试保存图像的部分):

public class Tab1MyProfile extends Fragment  {

ImageView userImageProfileView;


    @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab1_my_profile, container, false);

    userImageProfileView = (ImageView) rootView.findViewById(R.id.profile_pic);

    mAuth = FirebaseAuth.getInstance();

    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
    mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists())
            {
                for(DataSnapshot userDetails : dataSnapshot.getChildren()) {

                    userImageProfileView = userDetails.child("Name").getValue());
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    return rootView;
}


}

这是我的错误所在:

userImageProfileView = userDetails.child("Name").getValue());

错误是:
不兼容的类型:
必需:android.widget.ImageView 找到:java.lang.Object

【问题讨论】:

    标签: android android-fragments firebase-realtime-database


    【解决方案1】:

    假设 Users 节点是您的 Firebase 数据库的直接子节点,要从特定用户获取这些值,请使用以下代码:

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference userIdRef = rootRef.child("Users").child(uid);
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String imageurl = dataSnapshot.child("imageurl").getValue(String.class);
            String userid = dataSnapshot.child("userid").getValue(String.class);
            Log.d("TAG", imageurl + " / " + userid);
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    userIdRef.addListenerForSingleValueEvent(eventListener);
    

    您的输出将是:

    https://firebasestorage.googleapis.com... / Tc2N9FA0uhTFZuMRNkRSHgiaGQ22
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多