问题在于,当您打开“设置”活动时,Toast会出现多次,而每次单击“复选框”后,我只需要一次。
在此先感谢所有尝试改善我的代码的人。
有关代码工作方式的更详细说明:
等等
public class PrefActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_screen);
Context context = getApplicationContext();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
settings.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
Toast mToast;
mToast = Toast.makeText(this, "toast text", Toast.LENGTH_SHORT);
if(key.equals("checkbox_key")){
mToast.show();
}
}
}
离开活动时,应调用settings.unregisterOnSharedPreferenceChangeListener()
您的onPause()
方法。我建议打电话给settings.registerOnSharedPreferenceChangeListener()
你onResume() callback
,而不是onCreate()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句