首页 > 代码库 > Toast在关闭应用后还显示的解决办法

Toast在关闭应用后还显示的解决办法

1.我们在用Toast的用法就是:Toast.makeText(Context,CharSequence , Duration).show()。但有的时候如果你在一次操作当中多次点击一个view的时候去显示Toast,可能在你关闭

应用后Toast任然会继续显示,这个小瑕疵很是讨厌。下面就说一下解决办法(用到activity的生命周期):

就是在要用Toast的Activity中添加两个函数:

函数一:

 1     // 对toast进行一个简单的封装 2     public void toastShow(CharSequence message) { 3         if (null == mToast) { 4             mToast = Toast.makeText(MainActivity.this, message, 5                     Toast.LENGTH_SHORT); 6             mToast.setGravity(Gravity.CENTER, 0, 0); 7         } else { 8             mToast.setText(message); 9         }10 11         mToast.show();12 13     }

函数二:

1 //取消Toast2     public void toastStop() {3         if (null != mToast) {4             mToast.cancel();5 6         }7 8     }

然后再Activity的OnPause()中调用toastStop()方法即可去掉Toast.

整个Activity示例:

public class MainActivity extends Activity {    private Button btn;    private Toast mToast;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn = (Button) findViewById(R.id.btn);        btn.setOnClickListener(new Button.OnClickListener() {            @Override            public void onClick(View v) {                toastShow("toast");            }        });    }    // 对toast进行一个简单的封装    public void toastShow(CharSequence message) {        if (null == mToast) {            mToast = Toast.makeText(MainActivity.this, message,                    Toast.LENGTH_SHORT);            mToast.setGravity(Gravity.CENTER, 0, 0);        } else {            mToast.setText(message);        }        mToast.show();    }    //取消Toast    public void toastStop() {        if (null != mToast) {            mToast.cancel();        }    }    @Override    protected void onPause() {        System.out.println("onPause() ");        toastStop();        super.onPause();    }}

xml文件哪些就没必要贴出来了。