【发布时间】:2017-12-27 12:53:32
【问题描述】:
我有以下场景:我有一个模型类,看起来像这样:
public class UserModel implements Serializable {
private String userEmail, userName;
public UserModel() {}
public UserModel(String userEmail, String userName) { this.userEmail = userEmail; this.userName = userName;}
//setters and getters
}
在我的第一个活动中,我正在登录 Firebase,我从 FirebaseUser 对象获取数据,然后我正在创建 UserModel 类的对象并将其传递给意图,如下所示:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("userModel", userModel);
startActivity(intent);
在第二个活动中,每次启动时,我都会检查用户是否已登录。如果是,它会留在这里,如果不是,我会重定向到第一个活动。在这里,我使用以下代码行获取对象:
UserModel userModel = (UserModel) getIntent().getSerializableExtra("userModel");
第一次活动开始时,一切正常,但是当我重新开始活动时,我得到一个NullPointerException。如何保留通过任何活动重启从意图中获得的 userModel 对象?
提前致谢!
【问题讨论】:
-
为此使用
LiveData和ViewModel类。 -
我找到的最佳解决方案...lucazanini.eu/en/2014/android/…
-
@SripadRaj 为什么要使用
SharedPreferences而不是 Intent?这有什么问题? -
@KuLdipPaTel
LiveData and ViewModel是什么意思? -
@IoanaP。对不起,我想,我误解了你的问题。但是要回答您的问题,可以随时访问 Sharedprefs 数据,但是在 Intents 中,如果您不通过意图,您将无法获取数据。当活动重新启动时,您可能无法通过意图获取数据。所以它抛出了 NPE。
标签: java android firebase android-intent persistence