kai*_*uki 0 java android nullpointerexception sharedpreferences
我正在尝试保存文件解析的日期,以便下次用户打开应用程序时,可以根据上一个解析日期检查日期.
我使用共享首选项来保存数据并检索它,但收到错误.这是代码:
SharedPreferences settings = getPreferences(0);
String today = new Date(System.currentTimeMillis()).toString();
SharedPreferences.Editor edit = settings.edit();
System.out.println("******** Today : " + today);
edit.putString("lastdate", today);
String fetch = settings.getString("lastdate", "0");
System.out.println("******** Fetch : " + fetch);
txtTest.setText(fetch);
Run Code Online (Sandbox Code Playgroud)
但我得到空指针错误,我错过了什么?
许多应用程序可以提供捕获用户对特定应用程序或活动的设置的偏好的方式.为了支持这一点,Android提供了一组简单的API.
首选项通常是名称值对.它们可以作为"共享首选项"存储在应用程序中的各种活动中(注意,它不能跨进程共享).或者它可以是需要存储特定于活动的东西.
共享首选项:共享首选项可以由应用程序之外的所有组件(活动,服务等)使用.
活动处理首选项:这些首选项只能在活动中使用,不能由应用程序的其他组件使用.
共享偏好:
共享首选项getSharedPreferences在Context类的方法的帮助下进行管理.偏好存储在默认的文件(1),或者你可以指定(2)被用来指偏好的文件名.
(1)以下是指定文件名时获取实例的方法
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
MODE_PRIVATE是首选项的操作模式.它是默认模式,表示只有调用的应用程序才能访问创建的文件.支持的其他两种模式是MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE.在MODE_WORLD_READABLE其他应用程序中可以读取创建的文件但不能修改它.如果MODE_WORLD_WRITEABLE其他应用程序也具有创建文件的写权限.
(2)推荐的方法是使用默认模式,而不指定文件名
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
Run Code Online (Sandbox Code Playgroud)
最后,一旦有了首选项实例,以下是如何从首选项中检索存储的值:
int storedPreference = preferences.getInt("storedInt", 0);
Run Code Online (Sandbox Code Playgroud)
要存储的值在首选项文件SharedPreference.Editor对象必须使用.Editor是类的嵌套接口SharedPreference.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Run Code Online (Sandbox Code Playgroud)
编辑器还支持类似的方法remove(),并clear()以从文件中删除喜好值.
活动偏好:
共享首选项可以由其他应用程序组件使用.但是,如果您不需要与其他组件共享首选项,并希望拥有私人首选项活动.您可以借助getPreferences()活动方法来做到这一点.该getPreference方法使用getSharedPreferences()带有活动类名称的方法作为首选项文件名.
以下是获取首选项的代码
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Run Code Online (Sandbox Code Playgroud)
存储值的代码也与共享首选项的代码相同.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Run Code Online (Sandbox Code Playgroud)
您还可以使用其他方法,例如在数据库中存储活动状态.注意Android还包含一个名为的包android.preference.该包定义了用于实现应用程序首选项UI的类.
要查看更多示例,请查看开发人员网站上的Android 数据存储帖子.
| 归档时间: |
|
| 查看次数: |
5035 次 |
| 最近记录: |