有没有办法只传递一个 "user" 对象而不是用户的所有变量
Is there any way to just pass a "user" object instead of all the variables of user
我有一个登录页面,现在在用户登录后我传递了它的所有数据,如 username
、password
等。我想知道我是否有可能就像整个用户一样传递它,我可以使用 getter 和 setter 来获取与用户相关的信息。我正在使用 Firebase 进行这个项目,所以也许我可以检查当前登录的用户或其他东西,我不确定哪种方法最适合这个。有没有这样的方法请告诉我。
我目前如何传递数据:
if (dataSnapshot.exists()) {
username.setError(null);
username.setErrorEnabled(false);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
if (passwordFromDB.equals(userEnteredPassword)) {
username.setError(null);
username.setErrorEnabled(false);
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("username",userNameFromDB);
intent.putExtra("password",passwordFromDB);
intent.putExtra("age",ageFromDB);
intent.putExtra("credits",creditsFromDB);
intent.putExtra("id",idFromDB);
Toast toast = Toast.makeText(getApplicationContext(),"Login Successful",Toast.LENGTH_SHORT);
toast.show();
startActivity(intent);
Is there any way to just pass a "user" object instead of all the variables of the user?
当然有。您可以添加整个用户对象,而不是添加所有这些值。但要实现这一点,您必须创建一个如下所示的模型 class:
class User implements Serializable {
String username, password, age, credits, id;
public User(String username, String password, String age, String credits, String id) {
this.username = username;
this.password = password;
this.age = age;
this.credits = credits;
this.id = id;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", age='" + age + '\'' +
", credits='" + credits + '\'' +
", id='" + id + '\'' +
'}';
}
}
不要忘记实现 Serializable 接口。现在要将对象添加到意图中,请像这样创建它:
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
User user = new User(userNameFromDB, passwordFromDB, ageFromDB, creditsFromDB, idFromDB);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("user", user);
而要在另一个 activity 中取回它,请使用以下代码行:
User user = (User) getIntent().getSerializableExtra("user");
Log.d("TAG", user);
我有一个登录页面,现在在用户登录后我传递了它的所有数据,如 username
、password
等。我想知道我是否有可能就像整个用户一样传递它,我可以使用 getter 和 setter 来获取与用户相关的信息。我正在使用 Firebase 进行这个项目,所以也许我可以检查当前登录的用户或其他东西,我不确定哪种方法最适合这个。有没有这样的方法请告诉我。
我目前如何传递数据:
if (dataSnapshot.exists()) {
username.setError(null);
username.setErrorEnabled(false);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
if (passwordFromDB.equals(userEnteredPassword)) {
username.setError(null);
username.setErrorEnabled(false);
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("username",userNameFromDB);
intent.putExtra("password",passwordFromDB);
intent.putExtra("age",ageFromDB);
intent.putExtra("credits",creditsFromDB);
intent.putExtra("id",idFromDB);
Toast toast = Toast.makeText(getApplicationContext(),"Login Successful",Toast.LENGTH_SHORT);
toast.show();
startActivity(intent);
Is there any way to just pass a "user" object instead of all the variables of the user?
当然有。您可以添加整个用户对象,而不是添加所有这些值。但要实现这一点,您必须创建一个如下所示的模型 class:
class User implements Serializable {
String username, password, age, credits, id;
public User(String username, String password, String age, String credits, String id) {
this.username = username;
this.password = password;
this.age = age;
this.credits = credits;
this.id = id;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", age='" + age + '\'' +
", credits='" + credits + '\'' +
", id='" + id + '\'' +
'}';
}
}
不要忘记实现 Serializable 接口。现在要将对象添加到意图中,请像这样创建它:
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
User user = new User(userNameFromDB, passwordFromDB, ageFromDB, creditsFromDB, idFromDB);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("user", user);
而要在另一个 activity 中取回它,请使用以下代码行:
User user = (User) getIntent().getSerializableExtra("user");
Log.d("TAG", user);