Нужно отобразить тост сразу после клика
Я видел похожие посты, такие как это - Отключить асинхронное отображение Toast [duplicate], и я попробовал отменить метод () оттуда, но они не решили мою проблему. Может быть, это связано с тем, что некоторая разница связана с предпочтительной деятельностью.
Пожалуйста, помогите мне улучшить мой код, чтобы тост отображался сразу после клика.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_screen);
Context context = getApplicationContext();
settings = PreferenceManager.getDefaultSharedPreferences(context);
settings.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
Toast theToast;
theToast = Toast.makeText(this, "toast text", Toast.LENGTH_LONG);
if(key.equals("checkbox_key")){
theToast.show();
}
if (key.equals("checkbox_key")&& theToast != null){
theToast.cancel();
}
}
1 ответ
Ваш вопрос сформулирован некорректно, но я предполагаю (после прочтения вашего кода), что вы спрашиваете, как отменить отображаемый в данный момент тост, когда вы устанавливаете / снимаете флажок и хотите сразу же отобразить новый тост в этом случае.
Проблема в том, что вы отменяете только что созданный тост, а не отображаемый тост, созданный ранее.
Попробуйте сохранить Toast в переменной-члене и отмените его. Что-то вроде:
private Toast mCurrerntToast = null;
@Override
public void onCreate(Bundle savedInstanceState) {
//...
}
public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
if(key.equals("checkbox_key")){
//If there is a previous toast displayed, cancel it
if(mCurrentToast != null){
mCurrentToast.cancel();
}
//Display a new, more current Toast message
mCurrentToast = Toast.makeText(this, "toast text", Toast.LENGTH_LONG);
mCurrentToast.show();
}
}
Дайте мне знать, если мое предположение о том, о чем вы спрашивали, было неверным, и я постараюсь помочь вам больше, но я уверен, что эту проблему вы пытаетесь решить.