在android中使用SharedReferences无法获得结果

在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

我试图存储用户对是否在活动中单击复选框的偏好,但是当我关闭并重新启动应用程序时,我没有得到期望的结果。i、 e如果用户选中了复选框,则在重新启动时,我不会将其视为选中

以下是我尝试过的:

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