1. 程式人生 > >Toast 解決連續顯示

Toast 解決連續顯示

Toast 是 Android 開發最常見的元件之一,經常用 toast 來顯示一些提示資訊,但在開發中經常有這樣一個問題:連續點選某個按鈕,toast 會一直現,如果點選的次數很多,可能會有十幾秒的時間都在顯示 toast,這樣的使用者體驗就不是很好。

Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();

上面的這種建立方法是最常見的一種,尤其是配合 Android Studio 外掛一起使用時更加方便快捷,只需要打幾個字母就可以建立完成。但是這樣的建立方法就會導致上述問題,那麼該如何解決呢?

進去 Toast 原始碼檢視 makeText 方法可以看到這個方法會返回一個 Toast 物件,如果我們的程式碼寫成這樣:

findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "toast", Toast.LENGTH_SHORT).show();
            }
        });

每點選一次就會建立一個 Toast 物件,每個 Toast 物件都會顯示幾秒,這樣問題就出來了,其實到這裡就可以看出問題的根本原因是每次點選都會建立一個 Toast 物件,如果設定成只有一個 Toast 物件,不管怎麼點選都不會建立新的物件,而是隻有已經建立好的物件,這樣問題是不是就可以解決了呢,用程式碼驗證一下就知道了。

Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if
(toast == null){ toast = Toast.makeText(MainActivity.this,"content ",Toast.LENGTH_SHORT); }else { toast.setText("content"); } toast.show(); } });

先定義一個 Toast 物件,在點選時判斷 toast 是否為空,如果為空則建立一個 Toast 物件,不為空就直接設定顯示資訊。這樣就可以避免每次點選都會建立 Toast 物件的問題了。

如果每次需要 Toast 的時候都這麼寫一次就太煩瑣了,所以接下來的事情就是封裝,封裝成一個 Toast 的工具類,一次封裝,到處使用,這個很程式設計師 ,嘻嘻……

public class ShowToast {

    private static Toast toast;

    public static void showToastOne(Context context,int content){
        if (toast == null){
            toast = Toast.makeText(context,content + "",Toast.LENGTH_SHORT);
        }else {
            toast.setText(content + "");
        }
        toast.show();
    }

    public static void showToastOne(Context context,String content){
        if (toast == null){
            toast = Toast.makeText(context,content + "",Toast.LENGTH_SHORT);
        }else {
            toast.setText(content + "");
        }
        toast.show();
    }
}