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 //取消Toast
2     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文件哪些就没必要贴出来了。

 

 

 

 

posted @ 2014-07-16 00:33  perfect亮  阅读(2701)  评论(0编辑  收藏  举报