Как отображать Toast в Android?

У меня есть ползунок, который можно поднять, а затем отобразит карту. Я могу перемещать ползунок вверх и вниз, чтобы скрыть или показать карту. Когда карта находится впереди, я могу обрабатывать события касания на этой карте. Каждый раз, когда я касаюсь, запускается 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, так что это была проблема.

Ответ 1

Чтобы отобразить Toast в вашем приложении, попробуйте следующее:

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

Ответ 2

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

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

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

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

Ответ 3

Синтаксис

Toast.makeText(context, text, duration);

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

Контекст

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

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

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

текст

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

 (string)num   // type caste

Продолжительность

Toast.LENGTH_SHORT - Задержка Toast 2000 мс предопределено

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

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


Example.1

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

Example.2

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

Ответ 4

Тост в Android

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

или

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

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

Ответ 5

Вы можете настроить свой 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();

Или Общий способ:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

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

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

Ответ 11

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

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

Ответ 12

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

Ответ 13

Простой способ

toast("Your Message")

ИЛИ ЖЕ

toast(R.string.some_message)

Просто добавьте два метода в вашу BaseActivity. Или создайте новую BaseActivity если вы еще не используете.

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

и расширить всю свою деятельность с помощью BaseActivity.

public class MainActivity extends BaseActivity

Ответ 14

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

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

Ответ 15

enter image description here

Необходимо прочитать: пример Android Toast

Синтаксис

Toast.makeText(context, text, duration);

Вы можете использовать getApplicationContext() или getActivity() или MainActivity.this (если имя действия - MainActivity)

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

или же

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();

Ответ 16

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

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

Ответ 17

Показать тост из сервиса

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 в свой класс Application и показывать toast из любого места.

Ответ 18

Если вы хотите написать простой тост в своей деятельности: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. Отображение TextView в тосте: ---

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

2. Показ изображения как тост: -

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. Показ макета как тост: -

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

** Если вы хотите написать тост в Async, то: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

Ответ 19

Вот еще один:

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

Где Toast:

Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();

& strings.xml:

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>