1

我正在制作一个相当基本的游戏。在我的偏好中,有一个选项可以更改难度设置。我希望能够在调用它的主要活动中以某种方式感知他们是否改变了难度。(然后重新开始游戏)

由于如何异步处理偏好活动,我遇到了困难。如果我在将意图发送到我的 PreferenceActivity (从菜单选择)之前和之后添加逻辑来检查值,它真的不起作用......

有人可以为我指出一个正确的方向,即如何序列化通常异步处理的一段代码,或者知道如何感知偏好的变化?是否有隐藏在某处的监听器类?

为了后代的缘故,这里是处理意图的代码以及我是如何失败的。(片段,来自内部菜单 onOptionsItemSelected,在开关内部)

case R.id.menuOptions:
    String currentDifficulty = preferences.getString("difficulty","problem!");
    Intent i = new Intent(this, prefs.class);
    startActivity(i);
    if (currentDifficulty.equals(preferences.getString("difficulty","problem!")))
        return true;
    else doNewGame();
    return true;
4

3 回答 3

6

Android 允许您注册偏好更改的侦听器。这是一个简单的例子:

public class myClass implements OnSharedPreferenceChangeListener
{
    private SharedPreferences settings;

    settings = PreferenceManager.getDefaultSharedPreferences(this);
    settings.registerOnSharedPreferenceChangeListener(this);

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
    {
       // Process it here
    }
}
于 2011-04-27T01:28:56.417 回答
4

OnPreferenceChangeListener您可以使用它来非常轻松地侦听首选项更改。

于 2011-04-27T01:26:26.507 回答
1

OnPreferenceChangeListener是一个好主意,但您也可以使用startActivityForResult(). 然后在首选项活动返回后通知您的活动onActivityResult()(您应该覆盖它以处理首选项更改)。

于 2011-04-27T06:37:59.053 回答