我想要显示两个不同的Toast。第二个应出现在第二个之后8秒。
我试图对此进行编码:
@Override
public void onReceive(Context context, Intent intent) {
Toast toast1 = new Toast(context);
Toast toast2 = new Toast(context);
//toast1
toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();
//wait for 8 seconds
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//toast2
toast2.makeText(context, "Toast2 ", Toast.LENGTH_SHORT).show();
不幸的是,只有第二个吐司出现了。我不知道错误是由于我错误地使用吐司还是错误使用了线程!
谢谢
答案 0 :(得分:3)
您无法停止UI线程。 为此,请使用Handler(Android方式)或TimerTask(Java方式)。
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(someContext, "someText", Toast.LENGTH_SHORT).show();
}
}, 8000);
答案 1 :(得分:1)
您可以使用Handler。
与线程的MessageQueue关联的Handler allows you to send and process Message and Runnable objects
。每个Handler实例都与一个线程和该线程的消息队列相关联。
@Override
public void onReceive(Context context, Intent intent) {
Toast toast1 = new Toast(context);
Toast toast2 = new Toast(context);
toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
toast2.makeText(context, "Toast2 ", Toast.LENGTH_SHORT).show();
}
}, 8000);
答案 2 :(得分:0)
无法停止UI线程。你必须使用一些处理程序。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();
}
}, 8000);
答案 3 :(得分:0)
我简单地说
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"First",Toast.LENGTH_LONG).show();
try{
Thread.sleep(2000);
}catch(Exception e){
}
Toast.makeText(context,"Second",Toast.LENGTH_LONG).show();
}
它工作了...... 但我的建议是你不应该停止UI线程,使用Handler作为@IntelliJ Amiya说。
答案 4 :(得分:0)
使用以下代码修改代码:
@Override
public void onReceive(Context context, Intent intent) {
Toast toast1 = new Toast(context);
Toast toast2 = new Toast(context);
//toast1
toast1.makeText(context, "First toast", Toast.LENGTH_SHORT).show();
//toast2
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
toast2.makeText(context, "Second toast", Toast.LENGTH_SHORT).show();
}
}, 8000);
}