【问题标题】:What is the name of SharedPreferences file name?SharedPreferences 文件名的名称是什么?
【发布时间】:2015-10-26 00:17:23
【问题描述】:

我是 Android 新手,我被卡住了 6 个小时。

问题是我不知道首选项文件的名称,我需要从首选项文件中获取值。我正在使用 Android Studio 并创建了一个“设置活动”。除了SettingsActivity.java,我一直没有给任何文件命名。

所以我的问题是共享首选项文件的名称是什么(因为应用程序保留了这些值)。或者,如果有办法找出来。

或者我在代码中遗漏了一些明显的东西。以下是我的相关代码。

String key = "example_text";
final String PREF_FILE_NAME = "SettingsActivity";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
String value = preferences.getString(key, " null");                

编辑 1:我有一个名为 RemoteDevice.java 的活动,在此活动中我有一个用于互联网使用的异步任务子类。现在我已经通过上面提到的 PreferencesActivity 存储了 IP 地址,现在想要检索它。但是找不到。

编辑 2: 在下面的代码中,我试图从编辑文本中获取价值。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<!-- NOTE: EditTextPreference accepts EditText attributes. -->
<!-- NOTE: EditTextPreference's summary should be set to its value by the activity code. -->
<EditTextPreference
    android:key="example_text"
    android:title="@string/pref_host_ip_address"
    android:defaultValue="@string/pref_default_host_address"
    android:selectAllOnFocus="true"
    android:inputType="numberDecimal"
    android:digits="123456789."
    android:capitalize="words"
    android:singleLine="true"
    android:maxLines="1" />

<!-- NOTE: Hide buttons to simplify the UI. Users can touch outside the dialog to
     dismiss it. -->
<!-- NOTE: ListPreference's summary should be set to its value by the activity code. -->
<ListPreference
    android:key="example_list"
    android:title="@string/pref_title_add_friends_to_messages"
    android:defaultValue="-1"
    android:entries="@array/pref_example_list_titles"
    android:entryValues="@array/pref_example_list_values"
    android:negativeButtonText="@null"
    android:positiveButtonText="@null" />

我猜这里android:key 是作为参数传递的关键

字符串值 = 首选项.getString(key, "null");

【问题讨论】:

    标签: android sharedpreferences android-preferences preferenceactivity


    【解决方案1】:

    你可以用这个:

    String key = "example_text";
    final String PREF_FILE_NAME = "SettingsActivity";
    shared = getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
    String value = preferences.getString(key, " null");
    

    但首先您必须使用您的密钥保存一些价值,例如:

    shared.edit().putString(key,"MY_VALUE").commit();
    

    【讨论】:

    • 我为此使用我的安卓手机,它保留了更改后的值。所以我认为价值观是存在的。还有其他建议吗?
    • 把你的问题说清楚,你遇到了什么问题。
    【解决方案2】:

    我正在使用 Android Studio 并创建了一个“设置活动”。

    然后您通过PreferenceManager.getDefaultSharedPreferences() 获得您的SharedPreferences。替换:

    SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
    

    与:

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    

    【讨论】:

    • 我已经尝试过了,但问题是我在另一个活动的 AsyncTask-SubClass 中使用上述代码。
    • @AbbasA.Ali:所以?这不会改变您访问PreferenceFragmentPreferenceActivity 使用的SharedPreferences 实例的方式。你调用PreferenceManager.getDefaultSharedPreferences(),从你的应用程序中提供一个参数any Context(例如,一个Activity的实例)。
    • 所以你可以在任何活动中给出任何活动的任何上下文?
    • 我试过了,但它不起作用。我仍然收到null
    • 谢谢我用你的方法搞定了。我为迟到的回复道歉,但我的一些朋友建议我不要生根我的设备。但最后它对我有用,我找到了文件。此外,有没有办法更改共享首选项的名称。文件?或者在构建时更改名称?谢谢。
    【解决方案3】:

    在真实设备上运行您的项目,如果创建了 SharedPreferences 文件(扩展名为 .xml),您可以在设备的根目录中找到它,更准确地说:

    /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml 要么 /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

    顺便说一句,你可以只使用 getPreferences() 方法。改变你的

    SharedPreferences 首选项 = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

    进入

    SharedPreferences 首选项 = getPreferences(MODE_PRIVATE);

    您的 SharedPreferences 文件将获得一个默认名称。但请记住,只有在项目中不需要多个 SharedPreferences 文件时,才值得使用 getPreferences() 而不是 getSharedPreferences()。

    【讨论】:

    • 我在我的安卓手机上运行它。但是数据文件夹在哪里?
    • 我没有看到我的项目的包名。这是否意味着没有偏好的文件?因为每当我在手机上运行应用程序并更改首选项并重新运行它时,它都会保持更新。还尝试了“显示隐藏的文件和文件夹”
    • 可能是您的应用安装在外部 SD 上。你在那里检查过吗?
    • 那是我没有外置SD的问题。
    • 你需要进入你的文件系统根目录。如果您的文件浏览器无法执行此操作,请尝试 Android 版 Total Commander。
    猜你喜欢
    • 2014-10-05
    • 2015-03-09
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多