Android的Toast是一个很常用的消息提示组件,开发的时候一般是用
Toast.makeText(context, text, duration).show();
来显示一条toast。这种方法有一个问题,如果一条旧消息没有消失以前,又产生了一条新消息,这时候新消息必须等待旧消息消失才能出现。然而实际情况中,我们通常更期望的表现是旧消息马上中止,新消息立刻出现。(不及时的通知不是好通知)
那么怎样才能达到这种效果呢?
1 Toast toast ;
2 if(toast == null){
3 toast = Toast.makeText(this,"",Toast.LENGTH_SHORT) ;
4 }
5 toast.setText("这样木有延时呢!!!") ;
6 toast.show() ;
例如:
activity_main.xml:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5
6 <Button
7 android:id="@+id/btn1"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:text="按钮1" />
11
12 <Button
13 android:id="@+id/btn2"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:text="按纽2" />
17
18 </LinearLayout>
MainActivity.java:
1 package com.gaolei.study;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.View.OnClickListener;
7 import android.widget.Button;
8 import android.widget.Toast;
9
10 import com.notting.work.R;
11
12 public class MainActivity extends Activity {
13 private Button button1;
14 private Button button2;
15 private Toast toast;
16
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21
22 button1 = (Button) this.findViewById(R.id.btn1);
23 button2 = (Button) this.findViewById(R.id.btn2);
24
25 button1.setOnClickListener(new OnClickListener() {
26
27 public void onClick(View v) {
28 // if (toast == null) {
29 // toast = Toast.makeText(MainActivity.this, "",
30 // Toast.LENGTH_SHORT);
31 // }
32 // toast.setText("2012");
33 // toast.show();
34
35 toast = Toast.makeText(MainActivity.this, "2012", Toast.LENGTH_SHORT);
36 toast.show();
37 }
38 });
39
40 button2.setOnClickListener(new OnClickListener() {
41
42 public void onClick(View v) {
43 // if (toast == null) {
44 // toast = Toast.makeText(MainActivity.this, "",
45 // Toast.LENGTH_SHORT);
46 // }
47 // toast.setText("2013");
48 // toast.show();
49
50 toast = Toast.makeText(MainActivity.this, "2013", Toast.LENGTH_SHORT);
51 toast.show();
52 }
53 });
54 }
55 }