0

我将用户登录信息保存到 SharedPreferences,因此他只需配置一次登录数据。

这是我的 Preferences.class 中的 onBackPressed 方法(扩展 PreferenceActivity):

    @Override
public void onBackPressed() {
    //Login again
    Intent intent = new Intent(Preferences.this, LoginActivity.class);
    startActivity(intent);
}

我需要的是一个 if 条件,它检查偏好是否改变。:

如果用户打开 Preferences Activity(编辑:从任何视图(!)),并且没有更改任何内容并单击后退按钮 - > 只是返回到最后一个状态。

如果偏好改变:调用 LoginActivity。

还没有找到解决方案,每当我点击后退按钮时都会调用 LoginActivity。

在此先感谢,马利

4

2 回答 2

1

要确定是否有更改,SharedPreferences您必须像这样将 a 分配OnSharedPreferenceChangeListener给您的SharedPreferences对象:

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

在这种情况下,我正在我的Application课堂上执行它:

public class YambaAppObj extends Application implements OnSharedPreferenceChangeListener 

然后你将不得不覆盖:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
    //this method will be called when preferences are changed.
    //do here what you want to record the change
    Log.d(TAG , "onSharedPreferenceChanged for:" + key);
}

然后您可以在您的onBackPressed()方法中检查此记录Preferences Activity 并采取相应措施。

于 2013-04-05T10:09:53.133 回答
1

您可以使用OnSharedPreferenceChangeListener或(取决于您的真正意思changed)您可以尝试使用onSharedPreferenceChanged()如下:

protected Boolean mPrefsChanged = false;

@Override
public void onSharedPreferenceChanged( SharedPreferences sharedPreferences,
                                                                  String key ) {
    mPrefsChanged = true;
}

当然它远非完美,但至少你有更多选择

于 2013-04-05T10:18:14.947 回答