Как отобразить тост в Android? - PullRequest
421 голосов
/ 17 августа 2010

У меня есть ползунок, который можно подтянуть, а затем он показывает карту.Я могу перемещать ползунок вверх и вниз, чтобы скрыть или показать карту.Когда карта находится впереди, я могу обрабатывать сенсорные события на этой карте.Каждый раз, когда я касаюсь, запускается AsyncTask, он загружает некоторые данные и создает Toast, который отображает данные.Хотя я запускаю задание по событию касания, тост не отображается, пока я не закрою ползунок.Когда слайдер закрыт и карта больше не отображается, появляется Toast.

Есть идеи?

Хорошо запустить задачу

РЕДАКТИРОВАТЬ:

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

и в onPostExecute сделать тост

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

В новом TestTask(this) это ссылка на MapOverlay, а не на MapActivity, так чтобыла проблема.

Ответы [ 19 ]

822 голосов
/ 17 августа 2010

Чтобы отобразить Тост в вашем приложении, попробуйте это:

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

Другой пример:

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

Мы можем определить две константы для продолжительности:

int LENGTH_LONG Показать представление или текстовое уведомление в течение длительного периода времени.

int LENGTH_SHORT Показать представление или текстовое уведомление за короткий период времени.

Настройка вашего тоста

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();
76 голосов
/ 12 декабря 2013

Расширение активности с помощью baseadapter использовал это

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

или если вы используете активность или mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
42 голосов
/ 10 марта 2014

Синтаксис

Toast.makeText(context, text, duration);

Значение параметра

context

getApplicationContext() - Возвращает контекст для всех действийвыполняется в приложении.

getBaseContext() - если вы хотите получить доступ к контексту из другого контекста в приложении, вы можете получить к нему доступ.

getContext() - возвращает представление контекста только текущей текущей деятельности.

текст

text - вернуть «STRING», если не строка, вы можете использовать тип cast.

 (string)num   // type caste

длительность

Toast.LENGTH_SHORT - Заданная задержка тоста 2000 мс

Toast.LENGTH_LONG - Заданная задержка тоста 3500 мс

milisecond - Задержка тоста определяется пользователем в миллисекундах (например, 4000)


Пример.1

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

Пример.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
21 голосов
/ 09 апреля 2013

Toast в Android

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

или

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

(LENGTH_SHORT и LENGTH_LONG действуют как логические флаги - это означает, что вы не можете отправить таймер тоста в миллисекунды, но вам нужноиспользуйте любой из этих 2 вариантов)

20 голосов
/ 22 ноября 2012

Вы можете настроить свой тост:

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

или общим способом:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
15 голосов
/ 31 марта 2016

Я попробовал несколько тостов, и для тех, кому их тост дает ошибку, попробуйте

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
14 голосов
/ 19 октября 2014

Есть два способа сделать это.

Либо используйте встроенное сообщение 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();

или создайте пользовательский файл, указав собственный файл макета

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
9 голосов
/ 11 декабря 2015

Я наткнулся здесь на ответы, и меня привлек тот факт, что, кажется, кто-то возится, полагая, что контекст действия необходим. Это не вариант. Тем не менее, это требование, чтобы Toast был опубликован из основного события или потока пользовательского интерфейса. Таким образом, заставить это работать вне контекста деятельности немного сложно. Вот пример, который будет работать внутри системной службы или любого потенциального класса, который в конечном итоге наследуется от 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();
            }
        });
    }
}

Обратите внимание, что нам не нужен доступ к экземпляру Activity, чтобы это работало. Пожалуйста, прекратите предполагать, что это так! Если бы требовалось Activity, подпись метода не вызывала бы Context.

7 голосов
/ 04 ноября 2016
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

вместо использования "app.getBaseContext ()".

Вы можете попробовать использовать " getApplicationContext () " или " getContext () ".

Если ваш код активен, вам следует использовать «this» из «Activty.this».
Если ваш код фрагментирован, вы должны перейти к «getActivity ()»

7 голосов
/ 16 декабря 2014

Если это фрагмент,

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