Firebase 参考获取总是最后一个用户被创建 android studio
Posted
技术标签:
【中文标题】Firebase 参考获取总是最后一个用户被创建 android studio【英文标题】:Firebase reference get always the last user was created android studio 【发布时间】:2020-09-28 23:00:03 【问题描述】:我正在做我的项目以研究 android 应用程序开发 我在获取已登录的 currentUser 并在 TextView 上显示他的名字时遇到问题。 似乎它总是向我显示最后一个创建的用户 无论我使用哪个用户登录
这是java文件:
public class ActionsFragment extends Fragment
FirebaseAuth auth;
Button acManagmentBtn;
TextView tvName;
public ActionsFragment()
// Required empty public constructor
@Override
public void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference managerRef = reference.child("Users").child("Manager");
managerRef.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
for (DataSnapshot ds : dataSnapshot.getChildren())
reference.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
Manager manager = ds.getValue(Manager.class);
tvName.setText(manager.getName());
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
// Toast.makeText(getActivity(), "Null שם פרטי", Toast.LENGTH_SHORT).show();
);
auth = FirebaseAuth.getInstance();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_actions, container, false);
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
tvName = view.findViewById(R.id.tv_name);
acManagmentBtn = view.findViewById(R.id.manage_ac_btn);
acManagmentBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(getActivity(), AcManagmentActivity.class);
startActivity(intent);
);
这是我的 firebase 实时数据库中的树:
link to the database tree
感谢您的帮助!
【问题讨论】:
您正在等待在数据库中添加一个值 (addValueEventListener
) 并显示名称字段。这就是为什么你只能得到最新的名字。
【参考方案1】:
Firebase 参考始终获取最后一个创建用户
这是正常行为,因为您在 for 循环的每次迭代中都将管理器的名称设置为 tvName
TextView,这意味着只会设置最后一个管理器名称,因为它是最后一次迭代。所以请记住,当涉及到来自多个用户的数据时,简单的 TextView 不是正确的选择,相反,您应该使用可以容纳多个项目的 View。一个可能的解决方案可能是 ListView,或者为什么不,甚至更好的是 RecyclerView。为此,我建议您从以下帖子中查看我的答案:
【讨论】:
嗨内塔内尔!您是否尝试过我上面的解决方案?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!以上是关于Firebase 参考获取总是最后一个用户被创建 android studio的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 的 .isNewUser 方法总是返回 false