我试图从不同的活动中获取并设置listpreference值,但它不起作用。
当我从主活动中读写它时,它只保留我写的东西,所以我假设当我退出活动时,我没有正确地针对listpreference,因为它在我的preference活动中工作没有问题。
我在开发人员网站上看到了一些使用getvalue和getentryvalues的charsequence的引用,但是我也没能让它们正常工作。
下面是我的代码,用于单击一个按钮并设置listpreference值,然后它启动一个意图来切换活动:
主活动,尝试将listproference的值设置为第一个索引值;

        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活动中写入的数字。问题是当我转到实际的首选项活动时,当我在listpreference上更改它并从那里启动相同的活动时,它不匹配或更新(它仍然读取我从主活动按钮设置的值)
尝试读取ListPreference的活动的代码如下:
    SharedPreferences settings = getSharedPreferences("PreferenceXML",
                MODE_PRIVATE);

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

最佳答案

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

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

这样称呼他们:
   SharedPreferences settings =
        PreferenceManager.getDefaultSharedPreferences(getBaseContext());

我不确定第一种调用偏好的方法是否遗漏了一步,但第二种方法工作起来像个冠军。

10-08 08:16
查看更多