如果没有显示 Toast,则显示 Toast
Show Toast if there is no Toast already showing
我有几个可以在片段上单击的按钮。单击每个按钮后,我会显示一条 Toast 消息,每个按钮都完全相同。因此,如果你一个接一个地按下 5 个不同的按钮,你将叠加 5 个 toast 消息,最终会长时间显示相同的消息。如果当前没有 Toast,我想做的是显示 Toast 运行。
我用来显示Toast消息的方法
public void showToastFromBackground(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});
}
按下按钮时,我只需调用 showToastFromBackground("Text to show");
。
我真正想要的是
public void showToastFromBackground(final String message) {
if(toastIsNotAlreadyRunning)
{
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});
}
}
尝试isShown()
。如果没有 toast
是 shown
,它 returns 是一个致命错误。所以可以用try and catch
来报错。
//"Toast toast" is declared in the class
public void showAToast (String st){
try{
toast.getView().isShown(); // true if visible
toast.setText(st);
} catch (Exception e) { // invisible if exception
toast = Toast.makeText(theContext, st, toastDuration);
}
toast.show(); //finally display it
}
来自 here.
如果已经有toast,则不等待,然后显示。但它确实会更改活动 toast 的文本并立即显示新文本,而不会相互重叠。
使用:
toast.getView().isShown();
或者:
if (toast == null || toast.getView().getWindowVisibility() != View.VISIBLE) {
// Show a new toast...
}
编辑:
Toast lastToast = null; // Class member variable
public void showToastFromBackground(final String message) {
if(isToastNotRunning()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
lastToast = Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG);
lastToast.show();
}
});
}
}
boolean isToastNotRunning() {
return (lastToast == null || lastToast.getView().getWindowVisibility() != View.VISIBLE);
}
我有几个可以在片段上单击的按钮。单击每个按钮后,我会显示一条 Toast 消息,每个按钮都完全相同。因此,如果你一个接一个地按下 5 个不同的按钮,你将叠加 5 个 toast 消息,最终会长时间显示相同的消息。如果当前没有 Toast,我想做的是显示 Toast 运行。
我用来显示Toast消息的方法
public void showToastFromBackground(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});
}
按下按钮时,我只需调用 showToastFromBackground("Text to show");
。
我真正想要的是
public void showToastFromBackground(final String message) {
if(toastIsNotAlreadyRunning)
{
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});
}
}
尝试isShown()
。如果没有 toast
是 shown
,它 returns 是一个致命错误。所以可以用try and catch
来报错。
//"Toast toast" is declared in the class
public void showAToast (String st){
try{
toast.getView().isShown(); // true if visible
toast.setText(st);
} catch (Exception e) { // invisible if exception
toast = Toast.makeText(theContext, st, toastDuration);
}
toast.show(); //finally display it
}
来自 here.
如果已经有toast,则不等待,然后显示。但它确实会更改活动 toast 的文本并立即显示新文本,而不会相互重叠。
使用:
toast.getView().isShown();
或者:
if (toast == null || toast.getView().getWindowVisibility() != View.VISIBLE) {
// Show a new toast...
}
编辑:
Toast lastToast = null; // Class member variable
public void showToastFromBackground(final String message) {
if(isToastNotRunning()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
lastToast = Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG);
lastToast.show();
}
});
}
}
boolean isToastNotRunning() {
return (lastToast == null || lastToast.getView().getWindowVisibility() != View.VISIBLE);
}