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