3

我正在尝试从不同的活动中获取和设置 listPreference 值,但它不起作用。

当我从我的主要活动中读写它时,它只保留我写的任何内容,所以我假设当我退出活动时我没有正确定位 listPreference 因为它在我的偏好活动中工作没问题。

我在开发者网站上看到了一些使用 getValue 和 getEntryValues 对 CharSequence 的引用,但我也没有运气让它们正常工作。

这是我单击按钮并设置 listpreference 值然后它启动切换活动的意图的代码:

Main Activity,试图将 listpreference 的值设置为第一个索引值;

        SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);
            SharedPreferences.Editor editor = settings.edit();

            editor.putString("ListPreferenceInXML", "1");
            editor.commit();

            String levelCheck = settings.getString("ListPreferenceInXML","1");

在我的下一个活动中,我调用 read the value on launch 以查看哪个 listPreference 处于活动状态,并且它始终是我从上面列出的 mains 活动中写入的数字。问题是当我转到实际的 Preference 活动时,当我在 ListPreference 上更改它并从那里启动相同的活动时它不匹配或更新(它仍然读取我从 Main 活动按钮设置的值)

尝试读取 ListPreference 的活动的代码如下:

    SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);

    Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();
4

1 回答 1

4

所以我终于弄清楚了,问题出在我调用首选项的方式上。在这两种情况下,不要像这样调用首选项;

   SharedPreferences settings = getSharedPreferences("PreferenceXML", 
            MODE_PRIVATE);

像这样称呼他们:

   SharedPreferences settings = 
        PreferenceManager.getDefaultSharedPreferences(getBaseContext());

我不确定在调用首选项的第一种方式中是否缺少步骤,但第二种方式就像一个冠军。

于 2011-05-28T10:37:47.523 回答