Почему тост появляется чаще, чем мне нужно?
Проблема в том, что тост появляется столько раз, сколько вы открываете действие "Настройки", а он мне нужен только один раз после каждого нажатия кнопки "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(); } }
}
1 ответ
Решение
Вам следует позвонить settings.unregisterOnSharedPreferenceChangeListener()
в вашем onPause()
метод, когда вы покидаете активность. И я предлагаю позвонить settings.registerOnSharedPreferenceChangeListener()
в вашем onResume() callback
скорее, чем onCreate()
,