¿Cómo mostrar Toast en Android?

446

Tengo un control deslizante que se puede levantar y luego muestra un mapa. Puedo mover el control deslizante hacia arriba y hacia abajo para ocultar o mostrar el mapa. Cuando el mapa está al frente, puedo manejar eventos táctiles en ese mapa. Cada vez que toco, AsyncTaskse activa a, descarga algunos datos y crea un Toastque muestra los datos. Aunque comienzo la tarea en el evento táctil, no se muestra ninguna tostada, no hasta que cierre el control deslizante. Cuando el control deslizante está cerrado y el mapa ya no se muestra, Toastaparece.

¿Algunas ideas?

Bueno comienza la tarea

EDITAR:

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

y en onPostExecutehacer un brindis

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

En nuevo TestTask(this), esto es una referencia MapOverlayy no a MapActivity, por lo que este fue el problema.

Voto a favor
fuente
1
Esta publicación fue respondida hace mucho tiempo, pero creo que mi comentario aún puede ayudar a alguien. hay una biblioteca bien formada relacionada Toast, compruébelo: stackoverflow.com/a/18280318/1891118
Oleksii K.
2
Casi todo sobre Toast ... tutorial simple ... haga clic aquí
Thomas Daniel

Respuestas:

849

Para mostrar Toast en su aplicación, intente esto:

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

Otro ejemplo:

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

Podemos definir dos constantes para la duración:

int LENGTH_LONG Muestra la vista o la notificación de texto durante un largo período de tiempo.

int LENGTH_SHORT Muestra la vista o la notificación de texto por un corto período de tiempo.

Personalizando tu tostada

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();
Jorgesys
fuente
3
@Elen, necesitas contexto de actividad para hacer TOASTS, no contexto de aplicación.
Yousha Aleayoub
1
En realidad, requerir un contexto de Actividad no es correcto. SIN EMBARGO, hacer que las tostadas funcionen fuera de las actividades (por ejemplo, en un Servicio del sistema) requiere acceso al ciclo principal. Publicando mi solución.
ChrisCM
77
Si lo está poniendo dentro de un método onClick, reemplazar getActivity () con getBaseContext () funcionó para mí.
Edward
@ PhilipBelgrave-Herbert Lamentablemente, su enlace ya no es bueno.
Ellen Spertus
44
Toast.makeText (MainActivity.this, message, Toast.LENGTH_LONG) .show ();
Shahab Einabadi
83

Ampliando la actividad usando baseadapteresto usado

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

o si estás usando actividad o mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
Cristiana Chavez
fuente
1
no existe tal cosa como el adaptador base o la actividad principal, las tostadas solo se muestran pasando el contexto de la aplicación de parámetros, el mensaje, la duración larga / corta
Mahesh
47

Sintaxis

Toast.makeText(context, text, duration);

Valor del parámetro

contexto

getApplicationContext() - Devuelve el contexto para todas las actividades que se ejecutan en la aplicación.

getBaseContext() - Si desea acceder a Context desde otro contexto dentro de la aplicación, puede acceder.

getContext() - Devuelve la vista de contexto solo la actividad actual en ejecución.

texto

text - Devuelve "STRING". Si no es una cadena, puedes usar el tipo cast.

 (string)num   // type caste

duración

Toast.LENGTH_SHORT - Toast delay 2000 ms predefinido

Toast.LENGTH_LONG - Toast delay 3500 ms predefinido

milisecond - Retraso de tostadas milisegundos definidos por el usuario (por ejemplo, 4000)


Ejemplo 1

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

Ejemplo 2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Jay Patel
fuente
Retraso de tostadas de 5000 milisegundos definido por el usuario.
Jay Patel
Buena explicación, pero necesita contexto de actividad para hacer TOASTS, no contexto de aplicación.
Yousha Aleayoub
Bueno, bueno, un elenco como (string) num aún no se ha introducido en Java. Pruebe Integer.toString () o similar.
Mostowski Colapso
2
no es posible establecer la duración de un brindis, solo los tiempos predefinidos, LENGTH_SHORT y LENGTH_LONG .
Jorgesys
23

Brindar en Android

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

o

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

(LENGTH_SHORT y LENGTH_LONG están actuando como banderas booleanas, lo que significa que no puede enviar el temporizador de tostadas a milisegundos, pero debe usar cualquiera de esas 2 opciones)

Dinesh
fuente
66
Lea la documentación, solo elegirá Toast.LENGTH_SHORT o Toast.LENGTH_LONG para la duración del mensaje.
Jorgesys
20

Puedes personalizar tu 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 forma general:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
Mahesh
fuente
1
Bien, aquí hay algunos ejemplos de proyectos reales en GitHub - codota.com/android/methods/android.widget.Toast/show
drorw
15

He probado varias tostadas y para aquellos a quienes su tostada les está dando error, intenten

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

fuente
14

Hay dos maneras de hacerlo.

Utilice el mensaje incorporado de Toast

//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 hacer uno personalizado proporcionando un archivo de diseño personalizado

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
Aniket Thakur
fuente
1
Buena explicación, pero necesita contexto de actividad para hacer TOASTS, no contexto de aplicación.
Yousha Aleayoub
Los documentos de Android mencionan específicamente el contexto de la aplicación: "Este método toma tres parámetros: el contexto de la aplicación, el mensaje de texto y la duración del brindis. Devuelve un objeto Toast debidamente inicializado".
lgunsch
9

Me encontré con las respuestas aquí, y me atrajo el hecho de que parece haber alguien hurgando, creyendo que se requiere un contexto de Actividad. Este no es el caso. Sin embargo, es un requisito que se publique un Toast desde el evento principal o Hilo de interfaz de usuario. Entonces, hacer que esto funcione fuera del contexto de una actividad es un poco complicado. Aquí hay un ejemplo que funcionaría dentro de un servicio del sistema, o cualquier clase potencial que finalmente herede 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();
            }
        });
    }
}

Tenga en cuenta que no necesitamos acceso a una instancia de Activitypara que esto funcione. ¡Por favor, deja de sugerir que este es el caso! Si Activityfuera necesario, la firma del método no requeriría a Context.

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

en lugar de usar "app.getBaseContext ()".

Puede intentar usar " getApplicationContext () " o " getContext () ".

Si su código está en actividad, entonces debe usar "this" de "Activty.this".
Si su código está fragmentado, entonces debería ir a "getActivity ()"

Yogesh Nandha
fuente
7

Si es fragmento,

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

Para mostrar Toast use el siguiente código:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
Anurag
fuente
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**
Gowtham Chandrasekaran
fuente
5

Manera simple

toast("Your Message")

O

toast(R.string.some_message)

Simplemente agregue dos métodos en su BaseActivity. O cree uno nuevo BaseActivitysi aún no lo está utilizando.

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

y extienda todas sus actividades por BaseActivity.

public class MainActivity extends BaseActivity
Khemraj
fuente
3

La forma más simple! (Para mostrar en su actividad principal, reemplace el primer argumento por otra actividad)

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

Esto funcionó para mí:

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

fuente
2

ingrese la descripción de la imagen aquí

Debe leer: ejemplo de Android Toast

Sintaxis

Toast.makeText(context, text, duration);

Puede usar getApplicationContext () o getActivity () o MainActivity.this (si el nombre de la actividad es 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();
Athira Reddy
fuente
2

La manera de comenzar

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

Mostrar brindis del servicio

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

También puede poner el showToastmétodo en su clase de aplicación y mostrar tostadas desde cualquier lugar.

Khemraj
fuente
1

Si quieres escribir un simple brindis en tu actividad: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1.Mostrar TextView en Toast: ---

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

2.Mostrar imagen como tostada: -

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.Muestra el diseño como tostadas: -

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

** Si quieres escribir el brindis en tu Async entonces: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

Deepya
fuente
1

Aqui hay otro más:

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

Donde Toastes:

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

& strings.xml:

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

Jadeye
fuente
1

Fragmentos internos (onCreateView)

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

Clases internas (onCreate)

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

MoniFern
fuente