Como exibir Toast no Android?

446

Eu tenho um controle deslizante que pode ser puxado para cima e depois mostra um mapa. Posso mover o controle deslizante para cima e para baixo para ocultar ou mostrar o mapa. Quando o mapa está na frente, eu posso lidar com eventos de toque nesse mapa. Sempre que eu toco, um AsyncTaské acionado, ele baixa alguns dados e cria um Toastque exibe os dados. Embora eu inicie a tarefa no evento de toque, nenhum brinde é exibido, até fechar o controle deslizante. Quando o controle deslizante é fechado e o mapa não é mais exibido, é exibido Toast.

Alguma ideia?

Bem, comece a tarefa

EDITAR:

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

e onPostExecutefazer um brinde

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

No novo TestTask(this), isso é uma referência MapOverlaye não MapActivity, então esse era o problema.

Voto a favor
fonte
1
esta postagem foi respondida há muito tempo, mas acho que meu comentário ainda pode ajudar alguém. existe uma biblioteca bem formada relacionada a Toast, verifique-a: stackoverflow.com/a/18280318/1891118
Oleksii K.
2
Quase tudo sobre Toast ... tutorial simples .... clique aqui
Thomas Daniel

Respostas:

849

Para exibir o Toast no seu aplicativo, tente o seguinte:

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

Outro exemplo:

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

Podemos definir duas constantes para a duração:

int LENGTH_LONG Mostra a visualização ou a notificação de texto por um longo período de tempo.

int LENGTH_SHORT Mostra a visualização ou a notificação de texto por um curto período de tempo.

Personalizando sua torrada

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
fonte
3
@ Elen, você precisa do contexto de atividades para fazer TOASTS, não do contexto de aplicativos.
Yousha Aleayoub
1
Na verdade, exigir um contexto de atividade não está correto. NO ENTANTO, fazer com que as torradas funcionem fora das atividades (por exemplo, em um Serviço do sistema) requer acesso ao loop principal. Publicando minha solução.
ChrisCM
7
Se você o colocar dentro de um método onClick, substituir getActivity () por getBaseContext () funcionou para mim.
Edward
@ PhilipBelgrave-Herbert Infelizmente, o seu link não é mais bom.
Ellen Spertus
4
Toast.makeText (MainActivity.this, message, Toast.LENGTH_LONG) .show ();
Shahab Einabadi 15/10/2018
83

Estendendo a atividade usando baseadapterusado isso

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

ou se você estiver usando atividade ou mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
Cristiana Chavez
fonte
1
não existe tal coisa como adaptador de base ou atividade principal, torradas única exibição, passando parâmetro de contexto aplicativo, mensagem, duração-long / short
Mahesh
47

Sintaxe

Toast.makeText(context, text, duration);

Valor do parâmetro

contexto

getApplicationContext() - Retorna o contexto para todas as atividades em execução no aplicativo.

getBaseContext() - Se você deseja acessar o Contexto de outro contexto dentro do aplicativo, você pode acessar.

getContext() - Retorna a visualização de contexto apenas da atividade atual em execução.

texto

text - Retorne "STRING". Caso contrário, você pode usar o tipo cast.

 (string)num   // type caste

duração

Toast.LENGTH_SHORT - Atraso de brinde 2000 ms predefinido

Toast.LENGTH_LONG - Atraso de brinde 3500 ms predefinido

milisecond - atraso de brinde milissegundos definidos pelo usuário (por exemplo, 4000)


Exemplo 1

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

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Jay Patel
fonte
Atraso de brinde de 5000 milissegundos definido pelo usuário.
Jay Patel
Boa explicação, mas você precisa do contexto de atividades para fazer TOASTS, não do contexto de aplicativos.
Yousha Aleayoub
Bem, bem, um elenco como (string) num ainda não foi introduzido no Java. Tente Integer.toString () ou similar.
Mostowski Collapse
2
a duração da configuração não é possível para um brinde, apenas os horários predefinidos, LENGTH_SHORT e LENGTH_LONG .
Jorgesys
23

Para brindar no Android

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

ou

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

(LENGTH_SHORT e LENGTH_LONG estão agindo como sinalizadores booleanos - o que significa que você não pode enviar o cronômetro de brinde para milissegundos, mas é necessário usar uma dessas duas opções)

Dinesh
fonte
6
Leia a documentação, você escolherá apenas Toast.LENGTH_SHORT ou Toast.LENGTH_LONG pela duração da mensagem.
Jorgesys
20

Você pode personalizar seu 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();

Ou maneira geral:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
Mahesh
fonte
1
Direito - aqui estão alguns exemplos de projetos reais no GitHub - codota.com/android/methods/android.widget.Toast/show
drorw
15

Eu tentei várias torradas e para aqueles a quem a torrada lhes está dando erro, tente

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

fonte
14

Existem duas maneiras de fazer isso.

Use a mensagem Toast embutida

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

ou faça um personalizado, fornecendo arquivo de layout 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
fonte
1
Boa explicação, mas você precisa do contexto de atividades para fazer TOASTS, não do contexto de aplicativos.
Yousha Aleayoub
Os documentos do Android mencionam especificamente o contexto do aplicativo: "Este método utiliza três parâmetros: o contexto do aplicativo, a mensagem de texto e a duração do brinde. Retorna um objeto Toast inicializado corretamente".
Lgunsch
9

Encontrei as respostas aqui e fiquei atraído pelo fato de que parece haver alguém bisbilhotando, acreditando que um contexto de Atividade é necessário. Este não é o caso. No entanto, é necessário que um Toast seja publicado a partir do evento principal ou do thread da interface do usuário. Portanto, fazer com que isso funcione fora de um contexto de atividade é um pouco complicado. Aqui está um exemplo que funcionaria dentro de um serviço do sistema ou em qualquer classe potencial que herda em última instância 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();
            }
        });
    }
}

Observe que não precisamos acessar uma instância Activitypara que isso funcione. Pare de sugerir que este é o caso! Se Activitynecessário, a assinatura do método não exigiria a Context.

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

em vez de usar "app.getBaseContext ()".

Você pode tentar usar " getApplicationContext () " ou " getContext () ".

Se o seu código estiver em atividade, você deve usar "this" de "Activty.this".
Se o seu código estiver em fragmento, você deve ir para "getActivity ()"

Yogesh Nandha
fonte
7

Se é um fragmento,

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

Para exibir o Toast, use o seguinte código:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
Anurag
fonte
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
fonte
5

Maneira simples

toast("Your Message")

OU

toast(R.string.some_message)

Basta adicionar dois métodos no seu BaseActivity. Ou crie um novo BaseActivityse você ainda não estiver usando.

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

e estenda todas as suas atividades até BaseActivity.

public class MainActivity extends BaseActivity
Khemraj
fonte
3

Maneira mais simples! (Para exibir em sua atividade principal, substitua Primeiro argumento por outra atividade)

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

Isso funcionou para mim:

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

fonte
2

insira a descrição da imagem aqui

Deve ler: Exemplo do Android Toast

Sintaxe

Toast.makeText(context, text, duration);

Você pode usar getApplicationContext () ou getActivity () ou MainActivity.this (se o Nome da atividade for MainActivity)

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

ou

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
Athira Reddy
fonte
2

A maneira de começar

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

Mostrar brinde do serviço

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

Você também pode colocar o showToastmétodo na sua classe Application e mostrar o brinde de qualquer lugar.

Khemraj
fonte
1

Se você deseja escrever um brinde simples em sua atividade: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. exibindo TextView no Toast: ---

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

2.Showing imagem como torrada: -

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.Show Layout como brinde: -

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 você quiser escrever o brinde no seu Async, então: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

Deepya
fonte
1

Aqui está mais um:

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

Onde Toastfica:

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
fonte
1

Fragmentos internos (onCreateView)

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

Classes internas (onCreate)

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

MoniFern
fonte