对不起,我的英语不好。 我希望按顺序显示两个吐司,换句话说当第一个吐司持续时间超过第二个吐司时出现。 这是我的代码:
Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Toast2", Toast.LENGTH_SHORT).show();
但只会出现第二个吐司信息。我认为当第二次吐司的show方法执行时它将取消之前的吐司(第一次吐司)
我用这段代码解决了我的问题:
Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
Handler handler =new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show();
}
},1000);
但有没有更简单的解决方案?
但只会出现第二个吐司信息。我认为当第二次吐司的show方法执行时它将取消之前的吐司(第一次吐司)
当你调用show
方法时,它将被放入UI线程的消息队列中,Toast将按顺序显示。但是你同时放两个Toast,后者会与前者重叠。
我希望按顺序显示两个吐司,换句话说当第一个吐司持续时间超过第二个吐司时出现。
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
要在第一个吐司的持续时间后显示第二个吐司,请将代码更改为
Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show();
}
}, 2000);
但有没有更简单的解决方案?
使用Handler是实现任务的简单易用的解决方案。
有两种方法可以实现它
这应该可以帮到你:
Toast.makeText(this, "Show toast 1", Toast.LENGTH_SHORT).show();
new Thread(){
@Override
public void run() {
try{
sleep(Toast.LENGTH_SHORT); // sleep the time first toast is being shown
Toast.makeText(this, "Show toast 2", Toast.LENGTH_SHORT).show();
}catch (InterruptedException e){
e.printStackTrace();
}
}
}.start();
其他解决方案是使用AlertDialog
createDialog().show();
用两个方法createDialog()和continueDialog()
public AlertDialog createDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Toast1")
.setPositiveButton("Next",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
continueDialog().show();
}
});
return builder.create();
}
public AlertDialog continueDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Toast2")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
return builder.create();
}