需要在点击后立即显示Toast
Need to display Toast right after click
我看到了这样的相关帖子 - Disable the Asynchronous display of a Toast [duplicate] 我尝试了那里的 cancel() 方法,但它们没有解决我的问题。可能是因为一些与 Preference Activity 相关的差异。
请帮助我改进我的代码,以便 Toast 在单击后立即显示。
@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();
}
}
你的问题措辞不当,但我假设(在阅读你的代码之后)你问的是当你 check/uncheck 一个新框并想要显示一个新 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();
}
}
如果我对您所问内容的假设有误,请告诉我,我会尽力提供更多帮助,但我很确定这就是您要解决的问题。
我看到了这样的相关帖子 - Disable the Asynchronous display of a Toast [duplicate] 我尝试了那里的 cancel() 方法,但它们没有解决我的问题。可能是因为一些与 Preference Activity 相关的差异。
请帮助我改进我的代码,以便 Toast 在单击后立即显示。
@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();
}
}
你的问题措辞不当,但我假设(在阅读你的代码之后)你问的是当你 check/uncheck 一个新框并想要显示一个新 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();
}
}
如果我对您所问内容的假设有误,请告诉我,我会尽力提供更多帮助,但我很确定这就是您要解决的问题。