如何在需要显示另一个吐司时使吐司超时?
How to make a toast timeout when another toast needs to be displayed?
我有 2 个按钮,它们的 onClick 连接到这些方法,代码类似于:
/** Called when the user clicks button2 */
public void button1Start(View view) {
// Display a toast at bottom of screen
Toast.makeText(getApplicationContext(), "Toast1", Toast.LENGTH_SHORT).show();
}
/** Called when the user clicks button2 */
public void button2Start(View view) {
// Display different toast at bottom of screen
Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
}
现在,正如预期的那样,当我单击这些按钮时,toasts 在前一个超时后一次出现在屏幕底部。
我需要的是这种行为:当我单击按钮 2 时,"Toast2" 视图应立即替换 "Toast1",而不管 "Toast1" 的持续时间如何。有什么办法可以做到这一点?我可以让 "toast1" 超时或者让 toast1 视图不可见吗?
你不能让吐司不可见,但你可以让它延迟(但我认为这不是一个好习惯)
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
}
}, 100);
How to make a toast timeout when another toast needs to be displayed?
不,那不可能!
您尝试过 cancel()
方法吗?
Toast mytoast;
mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG);
mytoast.show();
....
....
....
if(CancelToast){
mytoast.cancel();
}
只需使用同一个 Toast 对象来显示您的文本。
也许您应该创建一个单例以在整个应用程序中使用,但最短的方法是:
private Toast mToast;
private void showMessage(String message) {
if (mToast == null) {
mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
} else {
mToast.setText(message);
}
mToast.show();
}
无需取消。之前的文本将立即被替换(如果有的话)。
我有 2 个按钮,它们的 onClick 连接到这些方法,代码类似于:
/** Called when the user clicks button2 */
public void button1Start(View view) {
// Display a toast at bottom of screen
Toast.makeText(getApplicationContext(), "Toast1", Toast.LENGTH_SHORT).show();
}
/** Called when the user clicks button2 */
public void button2Start(View view) {
// Display different toast at bottom of screen
Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
}
现在,正如预期的那样,当我单击这些按钮时,toasts 在前一个超时后一次出现在屏幕底部。
我需要的是这种行为:当我单击按钮 2 时,"Toast2" 视图应立即替换 "Toast1",而不管 "Toast1" 的持续时间如何。有什么办法可以做到这一点?我可以让 "toast1" 超时或者让 toast1 视图不可见吗?
你不能让吐司不可见,但你可以让它延迟(但我认为这不是一个好习惯)
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
}
}, 100);
How to make a toast timeout when another toast needs to be displayed?
不,那不可能!
您尝试过 cancel()
方法吗?
Toast mytoast;
mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG);
mytoast.show();
....
....
....
if(CancelToast){
mytoast.cancel();
}
只需使用同一个 Toast 对象来显示您的文本。
也许您应该创建一个单例以在整个应用程序中使用,但最短的方法是:
private Toast mToast;
private void showMessage(String message) {
if (mToast == null) {
mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
} else {
mToast.setText(message);
}
mToast.show();
}
无需取消。之前的文本将立即被替换(如果有的话)。