显示两个不同的Toast
display two different Toast
我想显示两个不同的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();
很遗憾,只出现了第二个吐司。不知道是我用错了toast还是用错了线程!
谢谢
您不能只停止 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);
您可以使用 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);
无法停止 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);
}
我想显示两个不同的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();
很遗憾,只出现了第二个吐司。不知道是我用错了toast还是用错了线程!
谢谢
您不能只停止 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);
您可以使用 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);
无法停止 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);
}