很简单,自己写个类。类里面只用一个toast对象去show。show之前用一个简单的if语句去判断当前toast对象是否还在,若在则将其释放掉在运行新的toast对象。 这样每次调用这个方法,不管上一个toast有没有执行完,都会将其cancle掉,运行当下。
话不多说,上式例:
写好封装类以供调用:
public class MyToast extends Application {
static Toast toast;
public static void show(Context context,String text,int time){
if(toast!=null){
toast.cancel();
}
toast= toast.makeText(context, text, time);
toast.show();
}
}
在活动中调用工具类:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.text1)
TextView text1;
@BindView(R.id.bun1)
Button bun1;
@BindView(R.id.bun2)
Button bun2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@OnClick({R.id.bun1, R.id.bun2})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bun1:
// 1,最初始: Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
MyToast.show(getApplicationContext(),"111",Toast.LENGTH_LONG);//类名+方法名
break;
case R.id.bun2:
// 1,最初始:Toast.makeText(this, "2222", Toast.LENGTH_SHORT).show();
MyToast.show(getApplicationContext(),"222",Toast.LENGTH_LONG);//类名+方法名
break;
}
}
}
在写一个工具类MyApplication与清单文件结合起来,供MyToast类使用(当做它的第一个参数----获取当前活动)。第三个参数也给它写死,只留第二个参数供使用者填写要提示的内容。
新建工具类MyApplication:
package com.example.toast.utils;
import android.app.Application;
/**
* Created by Acer on 2019/9/4.
*/
public class MyApplication extends Application {
static MyApplication application;
@Override
public void onCreate() {
super.onCreate();
application=this;
}
public static MyApplication getApplication() {
return application;
}
}
在manifest.xml文件中添加一条属性 android:name=".utils.MyApplication" ——也就是你工具类MyApplication建立的地址
随后在MyToast类中重载show的方法,补全另外两个参数方便使用:
public class MyToast extends Application {
static Toast toast;
public static void show(Context context,String text,int time){
if(toast!=null){
toast.cancel();
}
toast= toast.makeText(context, text, time);
toast.show();
}
//重载方法2
public static void show(String text){
if(toast!=null){
toast.cancel();
}
Context context=MyApplication.getApplication();
int time=Toast.LENGTH_LONG;
toast= toast.makeText(context, text, time);
toast.show();
}
}
主活动使用:
public class MainActivity extends AppCompatActivity {
.................
@OnClick({R.id.bun1, R.id.bun2})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bun1:
// 1,最初始: Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
//2,Toast工具类: MyToast.show(getApplicationContext(),"111",Toast.LENGTH_LONG);
MyToast.show("111");//重载方法,传一参
break;
case R.id.bun2:
// 1,最初始:Toast.makeText(this, "2222", Toast.LENGTH_SHORT).show();
//2,Toast工具类: MyToast.show(getApplicationContext(),"222",Toast.LENGTH_LONG);
MyToast.show("222");
break;
}
}
}