How to stop displaying message from Toast when Application is closed?

最后都变了- 提交于 2019-11-26 20:41:37

问题


This is my sample code:

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();
            }
        });
    }

}

When ever I click on the Button, the Toast message is displayed. That's fine.

My question is:

When I click multiple times on the button and then close the application, then the Toasts continue starting their work of displaying messages.

And I don't want that.

I want if the application is closed then Toasts should also stop displaying their messages.

Can anybody tell me what I have to do for this???


回答1:


I want if the application is closed then Toast should also stop displaying the message.

In your case call cancel() to Toast object to cancel it within onDestroy() method.

Here is a similar example.

Updated!

I tested OP solution but no result.

.hide() and .cancel() method is available for Toast but seem they are not working. The solution is, you have to create your own custom view which acts like a Toast and then you can cancel all Toasts when the Activity finishes.




回答2:


Store a reference to your toast object. In your onDestroy, if the toast is not null then call cancel() on it.




回答3:


You probably want to cancel the Toast whenever your app is not visible, so I would cancel it on the method 'onStop()'.

Here it goes:

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();
    }

}

Edit: Updated, it should work as OP intended now.




回答4:


Try this,

You can cancel Toast showing using this code.

  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);



回答5:


Try to use finish() in your OnCreate() function on some condition. Hope this will help you.



来源:https://stackoverflow.com/questions/14806651/how-to-stop-displaying-message-from-toast-when-application-is-closed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!