Как отобразить тост в 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 387

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

настройка тост

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

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 вариантов)

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

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

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

вместо того, чтобы, используя "приложение.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 метод в вашем классе приложения, и показать тост из любого места.