Как отобразить тост в Android?

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

какие идеи?

начать задание

EDIT:

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, так вот в чем проблема.

15 ответов


для отображения тост в приложения, попробуйте следующее:

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 показать вид или текстовое уведомление в течение короткого периода времени.

настройка тост!--22-->
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();


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

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

или если вы используете activity или mainactivity

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

синтаксис

Toast.makeText(context, text, duration);

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

контекст

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

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

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

текст

text - верните "STRING", если не 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();

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

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

тост в Android

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

или

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

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


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

либо используйте встроенное сообщение тоста

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

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

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

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


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

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

для отображения тостов используйте следующий код:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

 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**

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

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

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

Если ваш код находится в действии, вы должны использовать" это "из" Activty.этот."
Если ваш код находится во фрагменте, вы должны пойти на " getActivity ()"


самый простой способ! (Чтобы отобразить основное действие, замените первый аргумент для другого действия)

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

это сработало для меня:

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

показать тост от услуги

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

вы также можете поставить showToast метод в вашем классе приложений и показать тост из любого места.