OGeek|极客世界-中国程序员成长平台

标题: java - 如何从 Android 中的 PreferenceActivity 获取 SharedPreferences? [打印本页]

作者: 菜鸟教程小白    时间: 2022-8-1 01:21
标题: java - 如何从 Android 中的 PreferenceActivity 获取 SharedPreferences?

我正在使用 PreferenceActivity 来显示我的应用程序的一些设置。我正在通过 xml 文件扩展设置,以便我的 onCreate(和完整的类方法)看起来像这样:

public class FooActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.preference);
    }
}

PreferenceActivity的javadoc PreferenceFragment指出

These preferences will automatically save to SharedPreferences as the user interacts with them. To retrieve an instance of SharedPreferences that the preference hierarchy in this activity will use, call getDefaultSharedPreferences(android.content.Context) with a context in the same package as this activity.



但是我如何在另一个 Activity 中获取 SharedPreference 的名称?我只能打电话
getSharedPreferences(name, mode)

在其他 Activity 中,但我需要 PreferenceActivity 使用的 SharedPreference 的名称。名称是什么或如何检索它?



Best Answer-推荐答案


import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);

更新

根据Shared Preferences | Android Developer Tutorial (Part 13)通过 Sai Geetha M N,

Many applications may provide a way to capture user preferences on the settings of a specific application or an activity. For supporting this, Android provides a simple set of APIs.

Preferences are typically name value pairs. They can be stored as “Shared Preferences” across various activities in an application (note currently it cannot be shared across processes). Or it can be something that needs to be stored specific to an activity.


  • 共享首选项:共享首选项可由应用程序的所有组件( Activity 、服务等)使用。
  • Activity 处理的首选项:这些首选项只能在特定 Activity 中使用,不能被应用程序的其他组件使用。

  • 共享首选项:

    共享首选项在 getSharedPreferences 的帮助下进行管理。 Context 的方法类(class)。首选项存储在默认文件 (1) 或者你可以指定一个文件名 (2) 用于指代偏好。

    (1) 推荐方式是按默认模式使用,不指定文件名
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    

    (2) 这里是指定文件名时获取实例的方式
    public static final String PREF_FILE_NAME = "refFile";
    SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
    
    MODE_PRIVATE是首选项的操作模式。这是默认模式,意味着创建的文件只能由调用应用程序访问。支持的其他两种模式是MODE_WORLD_READABLEMODE_WORLD_WRITEABLE .在 MODE_WORLD_READABLE其他应用程序可以读取创建的文件但不能修改它。如果是 MODE_WORLD_WRITEABLE其他应用程序也对创建的文件具有写权限。

    最后,一旦你有了首选项实例,你可以这样做检索存储的值 从偏好:
    int storedPreference = preferences.getInt("storedInt", 0);
    

    存储值 在首选项文件中 SharedPreference.Editor必须使用对象。 EditorSharedPreference 中的嵌套接口(interface)类(class)。
    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("storedInt", storedPreference); // value to store
    editor.commit();
    

    编辑器还支持 remove() 等方法和 clear()从文件中删除首选项值。

    Activity 偏好:

    其他应用程序组件可以使用共享首选项。但是,如果您不需要与其他组件共享首选项并希望拥有 Activity 私有(private)首选项,您可以在 getPreferences() 的帮助下做到这一点。 Activity 的方法。 getPreference方法使用 getSharedPreferences()方法与首选项文件名的 Activity 类的名称。

    以下是获取首选项的代码
    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();
    

    您还可以使用其他方法,例如将 Activity 状态存储在数据库中。注意 Android 还包含一个名为 android.preference 的包。 .该包定义了实现应用程序首选项 UI 的类。

    要查看更多示例,请查看 Android 的 Data Storage在开发者网站上发布。

    关于java - 如何从 Android 中的 PreferenceActivity 获取 SharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2614719/






    欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4