Android 展示两种不同的吐司
我想展示两种不同的吐司。第二个应在第二个后8秒出现 我试着编写代码:Android 展示两种不同的吐司,android,multithreading,toast,Android,Multithreading,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
@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();
不幸的是,只有第二个祝酒词出现。我不知道这个错误是因为我错误地使用了toast还是因为我错误地使用了线程
谢谢您不能停止UI线程。 为此,请使用处理程序(Android方式)或TimerTask(Java方式)
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(someContext, "someText", Toast.LENGTH_SHORT).show();
}
}, 8000);
你可以用
处理程序允许您发送和处理与线程的MessageQueue关联的消息和可运行对象。每个处理程序实例都与一个线程和该线程的消息队列相关联
@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);
无法停止UI线程。您必须为此使用一些处理程序
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();
}
}, 8000);
我简单地说
@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线程,使用@IntelliJ Amiya所说的处理程序。用以下内容修改您的代码:
@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);
}
看到@jackonf1首先发布了正确的答案,而其他人只是复制粘贴,这很有趣。你的回答“有点”错了如果使用postDelayed,则需要在使用处理程序之前发送第一个Toast,并在runnable中发送第二个Toast。谢谢!它起作用了!你能看看这个问题吗?也许你能再给我一个主意,thanx