我看到了这样的相关帖子 - Disable the Asynchronous display of a Toast [duplicate],我从那里尝试了cancel()方法,但他们没有解决我的问题。也许是因为某些差异与偏好活动有关。
请帮助我改进我的代码,以便点击后立即显示Toast。
0
答案 0 :(得分:0)
你的问题措辞不多,但我认为(在阅读你的代码之后)当你检查/取消选中一个新框并希望立即显示一个新的Toast时,你问的是如何取消当前显示的Toast情况下。
问题在于您取消了刚刚创建的Toast,而不是之前创建的Toast。
尝试将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();
}
}
让我知道,如果我对你所询问的内容的假设是错误的,我会尝试提供更多帮助,但我很确定这是你要解决的问题。