2013-04-05 57 views
0

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

这是我在我的Preferences.class onBackPressed方法(延伸PreferenceActivity):

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

我需要的是一个,如果条件它检查,如果喜好改变或不

如果用户打开首选项活动(编辑:从任何视图(!)),并且不会更改任何内容并单击后退按钮 - >只需返回上一个状态。

如果首选项发生变化:调用LoginActivity。

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

由于提前, 马利

+0

使用偏好监听器 – njzk2 2013-04-05 09:58:53

+0

在这里你只启动loginActivity ..... – Unknown 2013-04-05 10:10:24

回答

1

,以确定是否SharedPreferences有一个变化,你必须指定一个OnSharedPreferenceChangeListenerSharedPreferences对象是这样的:在这种情况下

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); 
} 

,然后你可以在你的Preferences ActivityonBackPressed()方法来检查这个记录并据此采取行动。

+0

非常感谢,它是如何工作的;-)! – Marley 2013-04-05 11:00:45

+0

欢迎,@Marley。 – 2013-04-05 11:01:54

1

可以使用OnSharedPreferenceChangeListener或(取决于你真正米尼通过changed),你可以尝试使用onSharedPreferenceChanged(),如:

protected Boolean mPrefsChanged = false; 

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

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

+0

几乎10分钟后给出相同答案的要点是什么? – 2013-04-05 10:47:05

+0

如果它远非完美,我能做些什么更好? – Marley 2013-04-05 11:01:03