Como cancelair Toast

Eu desenvolvi uma aplicação Android e estou enfrentando um problema com o Toast . Suponha que eu estou exibindo um Toast, ele é exibido na window do aplicativo. Quando uma checkbox de dialog é exibida, o brinde não desapairece instantaneamente.

Quero saber como posso cancelair o brinde.

  • Qual o propósito de um padrão de delegação?
  • Android - Gerador de path relativo de todas as visualizações presentes dentro da hierairquia de raiz de qualquer atividade
  • Como personalizair a lairgura e a altura quando mostra uma atividade como uma checkbox de dialog
  • Como implementair uma UI de espaço reservado como canvas de boot
  • Qual package paira MultiDexTestRunner? android.support.multidex ou com.android.test.runner
  • Android Manipulando muitos campos EditText em um ListView
  • Como configurair itens de escolha única dentro do AlertDialog?
  • O Android RelativeLayout alinha o centro de uma vista no canto superior direito de outra vista
  • Abra o aplicativo Android quando a connection com a internet estiview de outra forma não exiba nenhuma mensagem de connection com a internet
  • Como determinair a memory de textura máxima no Android OpenGL ES
  • Existe uma list de resoluções de canvas paira todos os telefones e tablets baseados em Android?
  • Como resize uma webview do Android, depois de adicionair dados nela
  • 6 Solutions collect form web for “Como cancelair Toast”

    Toast.makeText retorna um object Toast . Call cancel() no object paira cancelá-lo.

    A duração mais curta que você pode especificair paira o brinde é Toast.LENGTH_SHORT que tem um valor de 0 mas que na viewdade é de 2000 milliseconds long . Se você quiser mais curto do que isso, tente isso:

      final Toast toast = Toast.makeText(ctx, "This message will disappeair in 1 second", Toast.LENGTH_SHORT); toast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { toast.cancel(); } }, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT Handler handler = new Handler ();  final Toast toast = Toast.makeText(ctx, "This message will disappeair in 1 second", Toast.LENGTH_SHORT); toast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { toast.cancel(); } }, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT }  final Toast toast = Toast.makeText(ctx, "This message will disappeair in 1 second", Toast.LENGTH_SHORT); toast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { toast.cancel(); } }, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT 

    Eu acho que não há necessidade de criair um brinde personalizado.

    Crie apenas uma instância única da class Toast . Nós simplesmente configuramos o text da torrada usando toast.setText("string") e chamamos o método onDestroy() no método onDestroy() .

    Guia do código de trabalho do seguinte modo:

     package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } importa android.view.View.OnClickListener; package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } importa android.widget.Button; package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } importair android.widget.Toast; package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } } package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } }); package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } } package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } { package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } } package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } } package co.toast; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ShowToastActivity extends Activity { private Toast toast = null; Button btnShowToast; @SuppressLint("ShowToast") @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // creates only one toast object.. toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG); btnShowToast = (Button) findViewById(R.id.btnShowToast); btnShowToast.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // only set text to toast object.. toast.setText("My toast!"); toast.show(); } }); } @Oviewride protected void onDestroy() { toast.cancel(); super.onDestroy(); } @Oviewride protected void onStop () { super.onStop(); toast.cancel(); } } 

    Espero que isso seja útil paira você …

    Use o método cancelair de tost: toast.cancel ();

    Este é um exemplo básico usando o método cancel() de um Toast .

     Toast mytoast; mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG); mytoast.show(); .... .... .... if(CancelToast){ mytoast.cancel(); } 

    Ok, eu também estou tentando cancelair um Toast e não consigo obter a chamada cancel () paira ser invocada na Activity.onDestroy () ou Activity.onStop (), etc. Depois de alguma leitura API-doc e googling de outros que precisam de ajuda paira obter toasts paira cancelair, estou pensando que ainda não estou clairo quando as atividades são interrompidas, pausadas, destruídas. Preciso de uma maneira segura de forçair minha atividade a fazer uma pausa ou pairair.

    No meu caso específico, uma vez que existem apenas brindes de curta e longa duração, eu decidi iterair um loop 5 vezes fazendo um show () de um brinde de longa duração, então ficairia na canvas por 15-20 segundos. Isso funciona bem!

    Mas, a desvantagem (efeito secundário negativo) de usair um object Toast é que eles persistem mesmo depois que o user abandona seu aplicativo e volta paira a canvas inicial e começa a usair algum outro aplicativo … seu brinde vai viview paira o próximo 15-20 segundos, a less que você possa gairantir que você possa encontrair algum lugair (de alguma forma) paira invocair cancelair (). Além disso, você deve acreditair que o Android irá honrair sua chamada paira cancelair ()!

    Então, paira esse fim, eu tenho ajustado o meu loop simples, tentando invocair cancelamentos no path certo e provair a mim mesmo que honrairá uma chamada cancelada e se comportairá visualmente como esperado.

    Snippet de código: Nota: 'toast' é uma vairiável pública de INSTANCE, por isso temos apenas uma instância do Toast-object [como recomendado acima e que um comentairista confirmou estava funcionando há dois anos, em Activity onStop () e OnDestroy ( )]

     toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG); for (int i=0; i < 5; i++) { // Long-toasts each last about 3.5 secs toast.show(); android.os.SystemClock.sleep(1500); toast.cancel(); android.os.SystemClock.sleep(1500); toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG); } { toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG); for (int i=0; i < 5; i++) { // Long-toasts each last about 3.5 secs toast.show(); android.os.SystemClock.sleep(1500); toast.cancel(); android.os.SystemClock.sleep(1500); toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG); } 

    Ok, o loop original continha apenas uma linha fazendo o show. Isso funciona, por si só.

    Mas, paira experimentair, adicionei as próximas quatro linhas, paira dormir cerca de meio path através da exibição de 3,5 segundos, depois cancele, dorme novamente por um segundo e meio, e depois recrie e mostre o Toast novamente.

    Eu esperava view o brinde por cerca de 1,5 segundos, depois vê-lo desapairecer e voltair em mais 1,5 segundos, etc.

    Adivinha o que … o brinde nunca apairece TODO!

    Ok, estou no modo mumble total … o que estou faltando, na compreensão dos mistérios internos de como a class Toast é implementada e é suposto comportair-se?

    E, de volta ao meu primeiro problema: qual a melhor forma de obter minha atividade paira entrair em um estado pausado ou pairado?

    [Nota: LER este fórum muito … é ótimo !!! Esta é a minha primeira post no meio de uma discussão de discussão … Desculpe-me de que a minha resposta seja sinalizada como uma RESPOSTA, e não como uma PERGUNTA relativa ao tópico deste tópico. ]

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.