4

在我的应用程序中,单击一个按钮,我将创建一个 Toast 为 -

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 消息应该消失。或建议任何替代方案来解决相同的问题。

4

2 回答 2

16

但这给了我一种接近的力量-从未使用 Toast.makeText() 调用过 Toast;

您可以使字段变量和方法一次只显示一个 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");
于 2013-01-13T04:48:25.587 回答
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("")' 这样您将获得所需的输出。

于 2013-01-13T07:04:20.587 回答