我有不同的按钮触发不同的吐司;全部由onClick或onLongClick触发我在OnCreate方法中初始化了所有吐司消息。我决定创建一个全局吐司,这样每当我要显示吐司时,我都会说if(toast != null) toast.cancel()
,然后说toast = exampleToast;
toast.show;
因此,要避免将烤面包排入队列,并使其易于在显示新的烤面包之前取消显示的任何烤面包。
我的问题是,在相同的吐司应按我的按钮出现多次的情况下,它只显示一次。
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);
例如,在以下代码中,可能会显示三个不同的吐司。但是,如果触发了一个吐司,直到我触发另一个吐司,它才会再次显示,这让我发疯了!
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()函数中