在android中使用SharedReferences无法获得结果
我试图存储用户对是否在活动中单击复选框的偏好,但是当我关闭并重新启动应用程序时,我没有得到期望的结果。i、 e如果用户选中了复选框,则在重新启动时,我不会将其视为选中 以下是我尝试过的:在android中使用SharedReferences无法获得结果,android,android-preferences,Android,Android Preferences,我试图存储用户对是否在活动中单击复选框的偏好,但是当我关闭并重新启动应用程序时,我没有得到期望的结果。i、 e如果用户选中了复选框,则在重新启动时,我不会将其视为选中 以下是我尝试过的: public void onCreate() { .... checkbox=(CheckBox)findViewById(R.id.checkbox); // storing the user preference SharedPreferences sharedpref = getS
public void onCreate()
{
....
checkbox=(CheckBox)findViewById(R.id.checkbox);
// storing the user preference
SharedPreferences sharedpref = getSharedPreferences(MYPREF,Activity.MODE_PRIVATE); //here MYPREF is the name of the file storing the preference
SharedPreferences.Editor e = sharedpref.edit();
e.putBoolean("checkboxvalue", checkbox.isChecked());
e.commit();
//retrieving the preference set
SharedPreferences mysharedpref = getSharedPreferences(TextSpeaker.MYPREF,Activity.MODE_PRIVATE);
checked=mysharedpref.getBoolean("checkboxvalue", false);
if(checked)checkbox.setChecked(true);
您很可能正在使用两个单独的首选项数据文件,因为您似乎有两个不同的组件(例如,活动)
尝试切换到使用
GetDefaultSharedReferences()
(在PreferenceManager
上提供)而不是GetSharedReferences()
,看看这是否有帮助。您很可能正在使用两个单独的首选项数据文件,因为您似乎有两个不同的组件(例如活动)
尝试切换到使用
GetDefaultSharedReferences()
(可在PreferenceManager
上找到)而不是GetSharedReferences()
,看看这是否有帮助。嗨,普拉内如果您在其他活动或应用程序中使用相同的名称在您的首选项之前创建,您在阅读相同的首选项时会遇到问题,请更改为“世界可读模式”
getSharedPreferences(MYPREF,Activity.MODE_WORLD_READABLE);
或
Hi Pranay如果您在其他活动或应用程序中使用相同的名称在您的首选项之前创建,您将无法读取相同的首选项更改为模式\世界\可读
getSharedPreferences(MYPREF,Activity.MODE_WORLD_READABLE);
或
许多应用程序可以提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API 首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容
Context
类的getSharedReferences
方法进行管理。首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2)
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
(1) 下面是指定文件名时获取实例的方式
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
模式\u PRIVATE
是首选项的操作模式。这是默认模式,意味着创建的文件将仅由调用应用程序访问。支持的其他两种模式是mode\u WORLD\u READABLE
和mode\u WORLD\u WRITEABLE
。在模式\u WORLD\u READABLE
中,其他应用程序可以读取创建的文件,但不能修改它。在MODE\u WORLD\u WRITEABLE
的情况下,其他应用程序也对创建的文件具有写入权限
(2) 建议使用默认模式,而不指定文件名
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
最后,拥有preferences实例后,下面是如何从preferences中检索存储值的方法:
int storedPreference = preferences.getInt("storedInt", 0);
要在首选项文件SharedReference.Editor
中存储值,必须使用对象Editor
是SharedReference
类的嵌套接口
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
编辑器还支持从文件中删除首选项值的方法,如remove()
和clear()
活动首选项:
共享首选项可由其他应用程序组件使用。但是,如果您不需要与其他组件共享首选项,并且希望活动具有私有首选项,则可以使用。您可以借助活动的getPreferences()
方法来完成此操作。getPreference
方法使用带有活动类名称的getSharedReferences()
方法作为首选项文件名
下面是获取首选项的代码
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
存储值的代码也与共享首选项相同
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
您还可以使用其他方法,如在数据库中存储活动状态。注意Android还包含一个名为Android.preference
的包。该包定义用于实现应用程序首选项UI的类
要查看更多示例,请查看Android开发者网站上的帖子。许多应用程序可能会提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API 首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容
Context
类的getSharedReferences
方法进行管理。首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2)
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
(1) 下面是指定文件名时获取实例的方式
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
模式\u PRIVATE
是首选项的操作模式。这是默认模式,意味着创建的文件将仅由调用应用程序访问。支持的其他两种模式是mode\u WORLD\u READABLE
和mode\u WORLD\u WRITEABLE