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