Jak wyświetlić Toast w Androidzie?

Mam suwak, który można podciągnąć, a potem pokazuje mapę. Mogę przesuwać suwak w górę iw dół, aby ukryć lub pokazać mapę. Kiedy mapa jest z przodu, mogę obsługiwać wydarzenia dotykowe na tej mapie. Za każdym razem, gdy dotykam, a AsyncTask jest uruchamiany, pobiera dane i tworzy Toast, który wyświetla dane. Chociaż uruchamiam zadanie na touch event nie jest wyświetlany toast, nie dopóki nie zamknę suwaka. Gdy suwak jest zamknięty i mapa nie jest już wyświetlana, pojawia się Toast.

Any pomysły?

Dobrze rozpocznij Zadanie

EDIT:

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

And in onPostExecute make a toast

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

W nowym TestTask(this) jest to odniesienie do MapOverlay, a nie do MapActivity, więc to był problem.

Author: Vasily Kabunov, 2010-08-17

15 answers

Aby wyświetlić Toast w aplikacji, spróbuj tego:

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

Inny przykład:

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

Możemy zdefiniować dwie stałe dla czasu trwania:

Int LENGTH_LONG Pokaż widok lub powiadomienie tekstowe przez długi okres czasu.

Int LENGTH_SHORT Pokaż widok lub powiadomienie tekstowe przez krótki okres czasu.

Dostosowywanie tostów

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();
 759
Author: Jorgesys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-10 09:08:22

Rozszerzenie aktywności za pomocą baseadapter użyłem tego

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

Lub jeśli używasz aktywności lub mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
 66
Author: Cristiana Chavez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-21 04:01:35

Składnia

Toast.makeText(context, text, duration);

Wartość Parametru

kontekst

getApplicationContext() - zwraca kontekst dla wszystkich działań uruchomionych w aplikacji.

getBaseContext() - Jeśli chcesz uzyskać dostęp do kontekstu z innego kontekstu w aplikacji, możesz uzyskać dostęp.

getContext() - zwraca tylko bieżącą bieżącą aktywność w widoku kontekstowym.

tekst

text - Return "STRING", jeśli nie string można użyć type Obsada

 (string)num   // type caste

czas trwania

Toast.LENGTH_SHORT - Toast delay 2000 ms predefiniowane

Toast.LENGTH_LONG - opóźnienie toastu 3500 ms predefiniowane

milisecond - Toast delay zdefiniowane przez użytkownika milisekundy (np. 4000)


przykład.1

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

przykład.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
 40
Author: Jay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-31 06:44:04

Możesz dostosować swój 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();

Lub ogólnie:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
 18
Author: Mahesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-22 13:50:39

Toast w Androidzie

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

Lub

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

( LENGTH_SHORT i LENGTH_LONG działają jako flagi logiczne - co oznacza, że nie możesz wysłać timera toast do milisekund, ale musisz użyć jednej z tych 2 opcji )

 16
Author: Dinesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 09:18:53

Można to zrobić na dwa sposoby.

Albo użyj wbudowanej wiadomości 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();

Lub zrobić niestandardowy, dostarczając niestandardowy plik układu

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
 14
Author: Aniket Thakur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-19 16:44:45

Próbowałem kilka toastów i dla tych, których ich toast daje im błąd spróbować

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
 14
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:45:49

Natknąłem się na odpowiedzi tutaj i przyciągnął mnie fakt, że wydaje się, że ktoś grzebał wokół, wierząc, że kontekst aktywności jest wymagany. Tak nie jest. Jest to jednak wymóg, aby Toast został opublikowany z głównego wydarzenia lub wątku interfejsu użytkownika. Tak więc doprowadzenie tego do pracy poza kontekstem aktywności jest trochę trudne. Oto przykład, który działałby wewnątrz usługi systemowej lub dowolnej klasy potencjalnej, która ostatecznie dziedziczy z 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();
            }
        });
    }
}

Zauważ, że nie potrzebujemy dostępu do instancji Activity, aby to zadziałało. Proszę przestań sugerować, że tak jest! Jeśli Activity są wymagane, podpis metody nie wymagałby Context.

 8
Author: ChrisCM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-10 23:07:01

Jeśli jest fragmentem,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
 7
Author: hash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-16 08:44:47

Do wyświetlenia tosta użyj następującego kodu:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
 6
Author: eThAn HuNt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 10:38:33
 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
Author: Gowtham Chandrasekaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-17 17:27:13
Toast.makeText(app.getBaseContext(),String)data.result,Toast.LENGTH_SHORT).show();

Zamiast " app.getBaseContext()".

Możesz spróbować użyć " getApplicationContext () " lub " getContext () ".

Jeśli Twój kod jest w aktywności, powinieneś użyć "this" Z " Activty.to".
Jeśli twój kod jest fragmentem, powinieneś wybrać "getActivity ()"

 5
Author: Yogesh Nandha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 09:34:00

Najprostszy sposób! (Aby wyświetlić w głównej aktywności, zamień pierwszy Argument na inną aktywność)

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}
 2
Author: DeeJay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 02:10:04

To mi pomogło:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-10 22:09:10

Pokaż Toast z serwisu

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

Możesz również umieścić metodę showToast w swojej klasie aplikacji i pokazać toast z dowolnego miejsca.

 0
Author: Khemraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-15 16:15:17