Android toast重复显示问题

我做项目时有一个输入位到10位以后加入提示不再输入问题,这里我使用了toast,导致输入超出10位以后,我连续输入,toast会一个接一个重复显示,体验很不好.

首先,我先查看源码分析原因.Toast提示使用

Toast.makeText(getActivity(), R.string.max_digits_alert,Toast.LENGTH_SHORT).show();

show()方法中

service.enqueueToast(pkg, tn, mDuration);

这里方法名表面意思就是将toast压入队列中,

然后在NotificationManagerService中查看enqueueToast()方法,

synchronized (mToastQueue) {

.......

//toast加入队列中

mToastQueue.add(record);

......

}

这里就会将所有toast加入队列,而Toast.makeText方法会每次都新建一个toast,当前同一界面相同toast反复弹出,这里我们可以只新建一个toast,

具体方法:

private Toast mToast = null;

private void getToast(Context context, int resId) {
        if (null == mToast) {
            mToast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
        }
        mToast.setText(resId);
        mToast.show();
    }

最后调用getToast方法,

getToast(getActivity(), R.string.max_digits_alert);

这里可以将getToast方法加在方法公共类中做公共方法.



你可能感兴趣的:(平时遇到小问题)