Come visualizzare Toast in Android?


446

Ho un cursore che può essere tirato su e poi mostra una mappa. Posso spostare il cursore su e giù per nascondere o mostrare la mappa. Quando la mappa è in primo piano, posso gestire gli eventi di tocco su quella mappa. Ogni volta che tocco, AsyncTaskviene attivato a, scarica alcuni dati e crea uno Toastche visualizza i dati. Sebbene avvii l'attività al tocco, non viene visualizzato alcun brindisi, fino a quando non chiudo il dispositivo di scorrimento. Quando il dispositivo di scorrimento è chiuso e la mappa non viene più visualizzata, viene visualizzato Toast.

Qualche idea?

Bene, inizia l'attività

MODIFICARE:

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }

e onPostExecutefare un brindisi

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();

Nel nuovo TestTask(this), questo è un riferimento a MapOverlaye non a MapActivity, quindi questo era il problema.


1
questo post ha avuto risposta molto tempo fa, ma penso che il mio commento possa ancora aiutare qualcuno. c'è una libreria ben formata relativa a Toast, controlla: stackoverflow.com/a/18280318/1891118
Oleksii K.

2
Quasi tutto su Toast ... semplice tutorial .... clicca qui
Thomas Daniel,

Risposte:


849

Per visualizzare Toast nella tua applicazione, prova questo:

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();

Un altro esempio:

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();

Possiamo definire due costanti per la durata:

int LENGTH_LONG Mostra la vista o la notifica di testo per un lungo periodo di tempo.

int LENGTH_SHORT Mostra la vista o la notifica di testo per un breve periodo di tempo.

Personalizza il tuo brindisi

LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();

3
@Elen, hai bisogno del contesto Activity per creare TOAST, non del contesto Application.
Yousha Aleayoub,

1
In realtà, richiedere un contesto di attività non è corretto. TUTTAVIA, far funzionare i toast al di fuori delle attività (ad esempio in un servizio di sistema) richiede l'accesso al ciclo principale. Pubblicando la mia soluzione.
ChrisCM,

7
Se lo stai inserendo in un metodo onClick, la sostituzione di getActivity () con getBaseContext () ha funzionato per me.
Edward,

@ PhilipBelgrave-Herbert Purtroppo il tuo link non è più valido.
Ellen Spertus,

4
Toast.makeText (MainActivity.this, message, Toast.LENGTH_LONG) .show ();
Shahab Einabadi,

83

L'estensione dell'attività usando baseadapterquesto usato

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();

o se stai usando attività o mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();

1
non esiste nulla di simile all'adattatore di base o all'attività principale, il brindisi viene visualizzato solo passando il contesto dell'app per i parametri, il messaggio, la durata / breve durata
Mahesh,

47

Sintassi

Toast.makeText(context, text, duration);

Valore del parametro

contesto

getApplicationContext() - Restituisce il contesto per tutte le attività in esecuzione nell'applicazione.

getBaseContext() - Se si desidera accedere al contesto da un altro contesto all'interno dell'applicazione, è possibile accedere.

getContext() - Restituisce la vista di contesto solo l'attività corrente in esecuzione.

testo

text - Restituisce "STRING", in caso contrario, è possibile utilizzare il tipo cast.

 (string)num   // type caste

durata

Toast.LENGTH_SHORT - Ritardo toast 2000 ms predefinito

Toast.LENGTH_LONG - Ritardo toast 3500 ms predefinito

milisecond - Ritardare i brindisi definiti in millisecondi dall'utente (es. 4000)


Esempio 1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

Ritardo del brindisi di 5000 millisecondi definito dall'utente.
Jay Patel,

Buona spiegazione, ma è necessario il contesto attività per creare TOAST, non il contesto dell'applicazione.
Yousha Aleayoub,

Bene, bene, un cast come (string) num non è stato ancora introdotto in Java. Prova Integer.toString () o simile.
Mostowski Collapse

2
l'impostazione della durata non è possibile per un brindisi, solo i tempi predefiniti, LENGTH_SHORT & LENGTH_LONG .
Jorgesys,

23

Per brindare in Android

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();

o

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();

(LENGTH_SHORT e LENGTH_LONG agiscono come flag booleani, il che significa che non puoi inviare il toast timer a millisecondi, ma devi utilizzare una di queste 2 opzioni)


6
Leggi la documentazione, sceglierai Toast.LENGTH_SHORT o Toast.LENGTH_LONG per la durata del messaggio.
Jorgesys,

20

Puoi personalizzare il tuo tost:

LayoutInflater mInflater=LayoutInflater.from(this);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

O modo generale:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();

1
Proprio - ecco alcuni esempi di progetti reali su GitHub - codota.com/android/methods/android.widget.Toast/show
drorw

15

Ho provato diversi toast e per quelli a cui il loro toast sta dando loro errore prova

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();

14

Ci sono due modi per farlo.

Utilizzare il messaggio Toast integrato

//Toast shown for  short period of time 
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();

//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();

o crearne uno personalizzato fornendo un file di layout personalizzato

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();

1
Buona spiegazione, ma è necessario il contesto attività per creare TOAST, non il contesto dell'applicazione.
Yousha Aleayoub,

I documenti Android menzionano specificamente il contesto dell'applicazione: "Questo metodo accetta tre parametri: il contesto dell'applicazione, il messaggio di testo e la durata del toast. Restituisce un oggetto Toast inizializzato correttamente."
lgunsch,

9

Ho incontrato le risposte qui, e sono stato attratto dal fatto che sembra che ci sia qualcuno in giro, credendo che sia richiesto un contesto di attività. Questo non è il caso. Tuttavia, è necessario che un Toast sia pubblicato dall'evento principale o dal thread dell'interfaccia utente. Quindi, farlo funzionare al di fuori di un contesto di attività è un po 'complicato. Ecco un esempio che funzionerebbe all'interno di un servizio di sistema o di qualsiasi classe potenziale che alla fine eredita Context.

public class MyService extends AccessibilityService {

    public void postToastMessage(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());

        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
}

Si noti che non è necessario l'accesso a un'istanza di Activityper farlo funzionare. Per favore, smetti di suggerire che sia così! Se Activityfosse richiesto, la firma del metodo non richiederebbe a Context.


8
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

invece di utilizzare "app.getBaseContext ()".

Puoi provare a utilizzare " getApplicationContext () " o " getContext () ".

Se il tuo codice è attivo, dovresti usare "this" di "Activty.this".
Se il tuo codice è frammentato, dovresti scegliere "getActivity ()"


7

Se è un frammento,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();

6

Per visualizzare Toast utilizzare il seguente codice:

Toast toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

5
 Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
 toast.setDuration(10000);//you can even use milliseconds to display toast
 toast.show();**//showing the toast is important**

5

Modo semplice

toast("Your Message")

O

toast(R.string.some_message)

Aggiungi solo due metodi nel tuo BaseActivity. Oppure creane uno nuovo BaseActivityse non lo stai già utilizzando.

public class BaseActivity extends AppCompatActivity {
    public void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    public void toast(@StringRes int msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

ed estendi tutte le tue attività di BaseActivity.

public class MainActivity extends BaseActivity

3

Il modo più semplice! (Per visualizzare nella tua attività principale, sostituisci il primo argomento per altre attività)

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}

2

Questo ha funzionato per me:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();

2

inserisci qui la descrizione dell'immagine

Deve leggere: Android Toast Esempio

Sintassi

Toast.makeText(context, text, duration);

È possibile utilizzare getApplicationContext () o getActivity () o MainActivity.this (se Nome attività è MainActivity)

Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();

o

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();

2

Il modo di iniziare

Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();

1

Mostra Toast dal servizio

public class ServiceA extends Service {
    //....
    public void showToast(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
    //....
}

Puoi anche mettere il showToastmetodo nella tua classe Application e mostrare toast da qualsiasi luogo.


1

Se vuoi scrivere un semplice brindisi nella tua attività: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1.Showing TextView in Toast: ---

TextView tv = new TextView(this); tv.setText("Hello!"); tv.setTextSize(30); tv.setTextColor(Color.RED); tv.setBackgroundColor(Color.YELLOW);

2.Showing Image as Toast: -

ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.blonde); Toast t = new Toast(this); t.setView(iv); t.setDuration(Toast.LENGTH_LONG); t.show();

3.showing Layout as Toast: -

LayoutInflater li = getLayoutInflater(); View view = li.inflate(R.layout.my_toast_layout,null,false); Toast t = new Toast(this); t.setView(view); t.setDuration(Toast.LENGTH_LONG); t.show();

** Se vuoi scrivere il brindisi nel tuo Async, allora: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();


1

Eccone un altro:

refreshBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
            }
        });

Dove Toastè:

Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();

& strings.xml:

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>


1

Inside Fragments (onCreateView)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

Inside Classes (onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.