Android - 在用户访问PreferenceActivity后确定Preference是否已更改

Eri*_*ric 1 android asynchronous preferenceactivity

我正在做一个相当基本的游戏.在我的偏好中,可以选择更改难度设置.我希望能够以某种方式,在调用它的主要活动中,感觉他们是否已经改变了难度.(然后重启游戏)

由于异步处理偏好活动的方式,我遇到了困难.如果我在将意图发送到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;
Run Code Online (Sandbox Code Playgroud)

deb*_*cey 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
    }
}
Run Code Online (Sandbox Code Playgroud)