为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Firebase在Android工作室项目中检索已记录的用户数据以导航标题作为用户名

如何使用Firebase在Android工作室项目中检索已记录的用户数据以导航标题作为用户名

梵蒂冈之花 2022-08-17 10:01:46
我是Android Project的新手。我使用Firebase创建项目。在这个项目中,我想将记录的用户名添加到导航标题中的文本视图中。我用于登录或注册模型选项。但我不能。有人对此有任何经验吗?我的火库数据库数据如下所示。我想做成这样我的家庭活动是这样的package com.cavad.firebaseproject;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.design.widget.NavigationView;import android.support.v4.view.GravityCompat;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBarDrawerToggle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;public class Home extends AppCompatActivity    implements NavigationView.OnNavigationItemSelectedListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_home);    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);    setSupportActionBar(toolbar);    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(            this, drawer, toolbar, R.string.navigation_drawer_open,  R.string.navigation_drawer_close);    drawer.addDrawerListener(toggle);    toggle.syncState();    NavigationView navigationView = (NavigationView)  findViewById(R.id.nav_view);    navigationView.setNavigationItemSelectedListener(this);    Fragment category = new CategoryFragment();    this.setDefaultFragment(category); } private void setDefaultFragment(Fragment defaultFragment) {    this.replaceFragment(defaultFragment); } public void replaceFragment(Fragment destFragment) {    FragmentManager fragmentManager = this.getSupportFragmentManager();    FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction();    fragmentTransaction.replace(R.id.category, destFragment);    fragmentTransaction.commit(); }
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

步骤 1.获取当前登录用户:-


获取当前用户的推荐方法是调用 getCurrentUser 方法。如果没有用户登录,getCurrentUser 将返回 null。示例 :-


FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

if (user != null) {

// Name, email address, and profile photo Url

String name = user.getDisplayName();

String email = user.getEmail();

Uri photoUrl = user.getPhotoUrl();


// Check if user's email is verified

boolean emailVerified = user.isEmailVerified();


// The user's ID, unique to the Firebase project. Do NOT use this value to

// authenticate with your backend server, if you have one. Use

// FirebaseUser.getIdToken() instead.

String uid = user.getUid();

}

有关详细信息,请查看链接


在 Firebase 中管理用户


步骤2.将其设置为导航视图标题:-你可以得到文本视图,如:-


NavigationView navigationView = (NavigationView) findViewById(R.id.your_nav_view_id);

View header = navigationView.getHeaderView(0)

TextView text = (TextView) header.findViewById(R.id.textView);


查看完整回答
反对 回复 2022-08-17
?
狐的传说

TA贡献1804条经验 获得超3个赞

从导航标题中的 firebase 实时数据库中检索记录的用户数据


xml 文件


    <TextView

        android:id="@+id/your_name"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:fontFamily="@font/gotham_bold"

        android:text="User Name"

        android:textColor="@color/brown"

        android:textSize="18sp"

     />


        <TextView

            android:id="@+id/user_name"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:fontFamily="@font/gotham_book"

            android:text="User Name"

            android:textColor="@color/brown"

           android:textSize="15sp"

            android:layout_gravity="center"

            />

java 代码


    firebaseDatabase.getReference().child("Users").child(auth.getUid())

            .addListenerForSingleValueEvent(new ValueEventListener() {

                @Override

                public void onDataChange(@NonNull DataSnapshot snapshot) {

                   

                    User user = snapshot.getValue(User.class);


                    View header = navigationView.getHeaderView(0);


                    name = header.findViewById(R.id.your_name);

                    username = header.findViewById(R.id.user_name);


                    name.setText(user.getName1());

                    username.setText("@" + user.getUsername1());

                }


                @Override

                public void onCancelled(@NonNull DatabaseError error) {


                }

            });


查看完整回答
反对 回复 2022-08-17
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果您想检索存储在实时数据库中的已登录用户电子邮件,用户名和图片,并在导航标题中显示它们,那么您可以简单地按照以下操作:


    NavigationView navigationView = findViewById(R.id.nav_view);

        database = FirebaseDatabase.getInstance();

        auth = FirebaseAuth.getInstance();


    database.getReference().child("Users").child(auth.getUid())

            .addListenerForSingleValueEvent(new ValueEventListener() {

                @Override

                public void onDataChange(@NonNull DataSnapshot snapshot) {

                //we have Users class which contain user properties and methods.

                    User user = snapshot.getValue(User.class);


                    View header = navigationView.getHeaderView(0);

                    nav_email = header.findViewById(R.id.nav_email);

                    nav_username = header.findViewById(R.id.nav_username);

                    nav_profile = header.findViewById(R.id.nav_profilePic);


            Picasso.get().load(user.getProfilePic()).placeholder(R.drawable.avatar).into(nav_profile);

                    nav_email.setText(user.getMail());

                    nav_username.setText(user.getUserName());

                }


                @Override

                public void onCancelled(@NonNull DatabaseError error) {


                }

            });

如果要使用 Picasso 从实时数据库中检索图像,然后在导航标头图像视图上设置它,则在捆绑包 Gradle 模块文件中添加以下依赖项:


    implementation 'com.squareup.picasso:picasso:2.71828'

然后,您可以在项目中使用毕加索。


查看完整回答
反对 回复 2022-08-17
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信