从另一个不起作用的活动中获取并设置listPreference

时间:2011-05-26 01:13:10

标签: android listpreference getstring

我正在尝试从不同的活动中获取并设置listPreference值,但它无效。

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

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

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

主要活动,尝试将列表首选项的值设置为第一个索引值;

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

所以我终于明白了,问题在于我调用偏好的方式。在这两种情况下,不是像这样调用偏好;

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

像这样打电话给他们:

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

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