【发布时间】:2019-10-14 01:53:54
【问题描述】:
我有不同的按钮来触发不同的祝酒词;都是由 onClick 或 onLongClick 触发的
我在 OnCreate 方法中初始化了所有 toast 消息。
我决定创建一个全局吐司,这样每次我想显示吐司时我会说if(toast != null) toast.cancel()然后toast = exampleToast;toast.show;
因此,为了避免 toast 被排队,并在显示新的 toast 之前轻松取消正在显示的任何 toast。
我的问题是,在我点击它的按钮时,同一个 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,它不会再次显示,直到我触发另一个 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;
}
【问题讨论】:
-
只是一个我正在检查的注释
标签: java android android-toast