- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多 Activity ,它在我的应用程序中也有很多方法,每个 Activity 都需要当前用户信息,如来自 firebase 数据库的名字、姓氏、用户名。为此,我每次都必须通过以下代码声明变量。
UserRef.child(currentUserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
String myProfileImage=dataSnapshot.child("username").getValue().toString();
String userfirstname=dataSnapshot.child("firstname").getValue().toString();
String userlastname=dataSnapshot.child("lastname").getValue().toString();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
那么,现在的问题是,有没有办法在全局范围内声明这三个变量,并且可以在任何 Activity 中使用它?
最佳答案
免责声明:
虽然我即将建议的方法有效,但它是一种粗略的方法。要以正确的方式(使用 FirebaseUser)解决这个问题,请查看 my other answer .
您可以使用 SharedPreferences 解决这个问题。简而言之,当用户注册时,您将他的详细信息保存到名为 SharedPreferences 的临时存储中。每次需要它时,您都可以用最少的代码行简单地检索它。
要将用户详细信息保存到 SharedPreferences 中,您可以使用以下方法:
public void saveToSharedPreferences(String firstName, String lastName, String photoUrl) {
// declare your sharedpreferences and editor variables
SharedPreferences sharedPreferences = context.getSharedPreferences("USER", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
// save your values
editor.putString("firstName", firstName);
editor.putString("lastName", lastName);
editor.putString("photoUrl", photoUrl);
// commit your changes
editor.apply();
}
要检索您的值,请使用以下代码行:
SharedPreferences sharedPreferences = context.getSharedPreferences("USER", MODE_PRIVATE);
String firstName = sharedPreferences.getString("firstName", "not found");
String lastName = sharedPreferences.getString("lastName", "not found");
String photoUrl = sharedPreferences.getString("photoUrl", "not found");
Note that "not found" represents your placeholder String just in case there is no data to retrieve.
希望对您有所帮助。编码愉快!
关于java - 如何通过单次声明获取当前用户信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842868/
当用户在 uisearchbar 中键入文本时,我正在过滤一个数组,但问题是我有一个警报处理程序,每次调用委托(delegate)时都会触发该处理程序,但我希望警报出现只有一次没有多次......代码
我有一个 HTML5、jQuery 卡片内存游戏,您可以通过一次翻转两张卡片来匹配卡片。我想在两张卡片匹配时播放动画,但因为我已经将 "transform: rotationY(180deg)" 应用
在我的 Jboss-EAP-6.1 中,我部署了一个名为 'myRealWebApp.war' 的 .war我可以使用此网址访问我的应用程序 - http://mywebsite.com/myReal
我是一名优秀的程序员,十分优秀!