问题是,Toast会在您打开“设置”活动时出现多次,而每次点击CheckBox后我只需要一次。
提前感谢所有试图改进我的代码的人。
有关代码如何工作的更详细说明:
等等
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();
}
}
}
答案 0 :(得分:0)
离开活动时,您应该在settings.unregisterOnSharedPreferenceChangeListener()
方法中致电onPause()
。我建议您在settings.registerOnSharedPreferenceChangeListener()
而不是onResume() callback
中致电onCreate()
。