吐司多次出现

时间:2013-01-13 04:43:28

标签: android toast

在我的应用程序中,点击按钮我创建一个Toast as -

Toast.makeText(context,"Please Enter Username",Toast.LENGTH_SHORT).show();

但是当有人点击按钮5-6次并关闭应用程序,或者进入另一个屏幕时,它仍然会在另一个屏幕上继续显示Toast一段时间。我已经看到了很多相同的解决方案。

我试过了 -

toast = Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT);
        toast.show();

并取消了这个吐司 -

onPause(){

if(toast!=null){
toast.cancel();

}

onDestroy()

上相同

我希望当有人点击按钮5-6次并退出应用程序或该活动时,toast消息应该消失。或建议任何替代解决方案。

2 个答案:

答案 0 :(得分:16)

  

但它给了我一个力量接近 - Toast从未使用Toast.makeText()调用;

您可以创建一个字段变量和方法,一次只显示一个Toast:

Toast toast;

public void displayToast(String message) {
    if(toast != null)
        toast.cancel();
    toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
    toast.show();
}

onPause()退出时取消现有的Toast:

protected void onPause() {
    if(toast != null)
        toast.cancel();
    super.onPause();
}

现在,只要您想要显示Toast,只需致电:

displayToast("Please Enter Username");

答案 1 :(得分:0)

试试这个:

Toast mToast;

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
      }

    @Override
    protected void onPause() {
        mToast.cancel();
        // TODO Auto-generated method stub
        super.onPause();
    }

    public void abc(View c) {

        mToast.cancel();
        mToast.setDuration(Toast.LENGTH_SHORT);
        mToast.setText("This is hi" + (i++));
        mToast.show();

    }

而不是使用'Toast.makeText'使用'mToast.setText(“”)' 通过这种方式,您将获得所需的输出。