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

如何在 SharedPreferences 中存储默认值

如何在 SharedPreferences 中存储默认值

GCT1015 2021-11-03 15:07:47
我正在创建一个餐厅应用程序,该应用程序由注册/登录系统的会员和非会员通过跳过注册/登录过程来查看菜单组成。我的主屏幕有菜单(非会员直接查看)、登录和注册按钮(会员注册/登录)。我想将默认的 phoneId 和密码存储到 SharedPreference 中,让“非会员”通过跳过登录/注册过程(p/s仅非会员自动登录)来查看菜单。但是,我总是面临 nullPointerException 错误,并且无法让非会员在按下菜单按钮时查看。我不知道哪里错了,因为我只是一个初学者和学习过程。常量.javapublic class Constant {public static final String DEFAULT_PHONE_ID = "9876543210";public static final String DEFAULT_PASSWORD = "12345";}AppPreferences.javapublic class AppPreferences {// Class variablesprivate Context context;private static SharedPreferences sharedPreferences;private static SharedPreferences.Editor editor;public static final String PREF_NAME = "iMenuApp";private int PRIVATE_MODE = 0;// Define your preferences keyprivate static final String USER_PHONE = "9876543210";private static final String USER_PASSWORD = "12345";private AppPreferences(Context context){    this.context = context;    sharedPreferences = this.context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);    if (sharedPreferences != null)    {        editor = sharedPreferences.edit();    }}//Store user PhoneIdpublic void setUserPhoneId(String userId){    String TAG = "AppPref:setUserId";    try    {        editor.putString(USER_PHONE, userId);        editor.commit();    } catch (Exception e) {        Log.e(TAG, String.valueOf(e));    }}// Get userPhoneIdpublic String getUserPhoneId(){    return sharedPreferences.getString(USER_PHONE,"default_phone");}//Store userPasswordpublic void setUserPassword(String userPassword){    String TAG = "AppPref:setUserPassword";    try    {        editor.putString(USER_PASSWORD, userPassword);        editor.commit();    } catch (Exception e) {        Log.e(TAG, String.valueOf(e));    }}// Get userPasswordpublic String getUserPassword(){    return sharedPreferences.getString(USER_PASSWORD,"default_password");}}我需要跟踪非会员的交易订单,所以我需要在默认的 phoneId 和密码下设置所有非会员。
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您从未appPreference在 MainActivity 中初始化。

这样做onCreate()

appPreference = new AppPreferences(this);


查看完整回答
反对 回复 2021-11-03
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您需要在访问其方法和默认值之前初始化应用程序首选项对象,如果未找到键值,您可以从首选项返回。

 sharedPreferences.getString(USER_PHONE,"default_phone");


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 190 浏览

添加回答

举报

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