12

这是我的示例代码:

public class MainActivity extends Activity {

    Button buttonClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonClick = (Button) findViewById(R.id.buttonClick);
        buttonClick.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "Here is the Toast", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

每当我单击按钮时,都会显示 Toast 消息。没关系。

我的问题是:

当我单击multiple times按钮然后关闭应用程序时,Toast将继续开始显示消息的工作。

我不希望那样。

我想如果应用程序关闭,那么 Toasts 也应该停止显示他们的消息。

谁能告诉我我该怎么做???

4

5 回答 5

10

我想如果应用程序关闭,那么 Toast 也应该停止显示消息。

在您的情况下,调用对象cancel()以在方法Toast中取消它。onDestroy()

这是一个类似的例子。

更新!

我测试了 OP 解决方案,但没有结果。

.hide().cancel()方法是可用的,Toast但似乎他们不工作。解决方案是,您必须创建自己的自定义视图,其行为类似于 a Toast,然后您可以ToastsActivity完成后取消所有视图。

于 2013-02-11T06:00:07.197 回答
4

存储对 toast 对象的引用。在您的 onDestroy 中,如果 toast 不为空,则在其上调用 cancel()。

于 2013-02-11T05:59:13.197 回答
3

每当您的应用程序不可见时,您可能想取消 Toast,所以我会在方法“onStop()”上取消它。

它是这样的:

public class MainActivity extends Activity {
    private Toast toast = null;
    Button buttonClick;

    @SuppressLint("ShowToast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
        buttonClick = (Button) findViewById(R.id.buttonClick);
        buttonClick.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                toast.setText("My toast!");
                toast.show();
            }
        });
    }

    @Override
    protected void onStop () {
        super.onStop();
        toast.cancel();
    }

}

编辑:已更新,它现在应该按 OP 的预期工作。

于 2013-02-11T06:08:16.160 回答
0

尝试这个,

Toast您可以使用此代码取消显示。

  final Toast toast = Toast.makeText(getApplicationContext(), "This message will    disappear     in half second", Toast.LENGTH_SHORT);
toast.show();

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 500);
于 2013-02-11T05:59:39.983 回答
-1

尝试在某些条件下finish()在您的功能中使用。OnCreate()希望这会帮助你。

于 2013-02-11T05:59:26.030 回答