背景
反复多次点击控件弹Toast 的场景,会一直不停的弹toast, 影响体验。所以就想无论点了多少次,只弹最后一次,这样体验最好。
一个早就该踩的坑
最初我是这么干的,完了发现Toast根本弹不出来了:
private Toast mToast;
public void showToast(){
if(mToast == null){
mToast = Toast.makeText(mContext, mContext.getResources().getString(R.string.xxx), Toast.LENGTH_SHORT);
}
mToast.cancel();
mToast.show();
}
正解
public void showToast(){
if(mToast == null){
mToast = Toast.makeText(mContext, mContext.getResources().getString(R.string.xxx), Toast.LENGTH_SHORT);
}else{
mToast.setText(R.string.xxx);
}
mToast.show();
}
解决思路,就是定义一个全局的成员变量Toast,这个Toast不为null的时候才去make,否则直接setText. 如果想要按返回键后立即使Toast不再显示,重写父类Activity的onBackPressed()方法里面去cancel你的Toast即可。
网友评论