toast 消息应显示与触发次数一样多的次数,但它只显示一次
toast message should be shown as many times as triggered but, it's only showing once
我有不同的按钮触发不同的敬酒;全部由 onClick 或 onLongClick 触发
我在我的 OnCreate 方法中初始化了所有 toast 消息。
我决定创建一个全局吐司,这样每次我想显示吐司时,我都会说 if(toast != null) toast.cancel()
然后 toast = exampleToast;
toast.show;
因此,为了避免吐司排队,并在显示新吐司之前轻松取消正在显示的任何吐司。
我的问题是,在我点击它的按钮时同一个 toast 应出现多次的情况下,它只显示一次。
private statice Toast toast
是我的全球祝酒词;我尝试将其设置为静态,但并没有解决问题。
private static Toast toast; // copies different toast messages; easily referenced and cancelled
private Toast backToast, deletedToast, setETimesToast, setRTimesToast, setLapsToast, savedToast,
finishToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toast longClickToDeleteToast = Toast.makeText(MainActivity.this, R.string.long_press, Toast.LENGTH_SHORT);
final Toast longClickToEditToast = Toast.makeText(MainActivity.this,"Long click to edit Title", Toast.LENGTH_SHORT);
final Toast underDevToast = Toast.makeText(MainActivity.this, R.string.under_development, Toast.LENGTH_SHORT);
finishToast = Toast.makeText(MainActivity.this, R.string.finished, Toast.LENGTH_SHORT);
savedToast = Toast.makeText(MainActivity.this, R.string.saved , Toast.LENGTH_SHORT);
setETimesToast = Toast.makeText(MainActivity.this, R.string.set_etime , Toast.LENGTH_SHORT);
setRTimesToast = Toast.makeText(MainActivity.this, R.string.set_rtime, Toast.LENGTH_SHORT);
setLapsToast = Toast.makeText(MainActivity.this, R.string.set_laps , Toast.LENGTH_SHORT);
backToast = Toast.makeText(MainActivity.this, "Tap again to exit", Toast.LENGTH_SHORT);
deletedToast = Toast.makeText(MainActivity.this, R.string.deleted, Toast.LENGTH_SHORT);
例如在下面的代码中,可以显示三个不同的祝酒词。但是,如果一个 toast 被触发,它不会再次显示,直到我触发另一个 toast,这让我发疯!
public void onClick(View view){
if(toast != null) {
toast.cancel();
toast = null;
}
if(checkFields()){
return;
}
private boolean checkFields() {
final boolean b = true;
toast = null;
if (minutes == 0 && seconds == 0) {
toast = setETimesToast;
toast.show();
return b;
}
if (restMin == 0 && restSec == 0) {
toast = setRTimesToast;
toast.show();
return b;
}
if(laps == 0){
toast = setLapsToast;
toast.show();
return b;
}
return false;
}
首先不要 .cancel()
在你的吐司上,因为如果显示吐司它会取消。
第二次调用 .show()
显示您的其他祝酒词。
试着放
toast.show();
在你的 onClick() 函数中
我通过添加条件解决了问题
&& toast.getView().isShown()
这样
if (toast != null && toast.getView().isShown()) toast.cancel()
我有不同的按钮触发不同的敬酒;全部由 onClick 或 onLongClick 触发
我在我的 OnCreate 方法中初始化了所有 toast 消息。
我决定创建一个全局吐司,这样每次我想显示吐司时,我都会说 if(toast != null) toast.cancel()
然后 toast = exampleToast;
toast.show;
因此,为了避免吐司排队,并在显示新吐司之前轻松取消正在显示的任何吐司。
我的问题是,在我点击它的按钮时同一个 toast 应出现多次的情况下,它只显示一次。
private statice Toast toast
是我的全球祝酒词;我尝试将其设置为静态,但并没有解决问题。
private static Toast toast; // copies different toast messages; easily referenced and cancelled
private Toast backToast, deletedToast, setETimesToast, setRTimesToast, setLapsToast, savedToast,
finishToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toast longClickToDeleteToast = Toast.makeText(MainActivity.this, R.string.long_press, Toast.LENGTH_SHORT);
final Toast longClickToEditToast = Toast.makeText(MainActivity.this,"Long click to edit Title", Toast.LENGTH_SHORT);
final Toast underDevToast = Toast.makeText(MainActivity.this, R.string.under_development, Toast.LENGTH_SHORT);
finishToast = Toast.makeText(MainActivity.this, R.string.finished, Toast.LENGTH_SHORT);
savedToast = Toast.makeText(MainActivity.this, R.string.saved , Toast.LENGTH_SHORT);
setETimesToast = Toast.makeText(MainActivity.this, R.string.set_etime , Toast.LENGTH_SHORT);
setRTimesToast = Toast.makeText(MainActivity.this, R.string.set_rtime, Toast.LENGTH_SHORT);
setLapsToast = Toast.makeText(MainActivity.this, R.string.set_laps , Toast.LENGTH_SHORT);
backToast = Toast.makeText(MainActivity.this, "Tap again to exit", Toast.LENGTH_SHORT);
deletedToast = Toast.makeText(MainActivity.this, R.string.deleted, Toast.LENGTH_SHORT);
例如在下面的代码中,可以显示三个不同的祝酒词。但是,如果一个 toast 被触发,它不会再次显示,直到我触发另一个 toast,这让我发疯!
public void onClick(View view){
if(toast != null) {
toast.cancel();
toast = null;
}
if(checkFields()){
return;
}
private boolean checkFields() {
final boolean b = true;
toast = null;
if (minutes == 0 && seconds == 0) {
toast = setETimesToast;
toast.show();
return b;
}
if (restMin == 0 && restSec == 0) {
toast = setRTimesToast;
toast.show();
return b;
}
if(laps == 0){
toast = setLapsToast;
toast.show();
return b;
}
return false;
}
首先不要 .cancel()
在你的吐司上,因为如果显示吐司它会取消。
第二次调用 .show()
显示您的其他祝酒词。
试着放 toast.show(); 在你的 onClick() 函数中
我通过添加条件解决了问题
&& toast.getView().isShown()
这样
if (toast != null && toast.getView().isShown()) toast.cancel()