Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
67 / 43 / 5
Регистрация: 24.08.2013
Сообщений: 678

Toast.makeText. Параметр context

03.03.2018, 08:46. Показов 2232. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
6
public static void MyFunction(Context context, int param1, int param2) {
//
//
//
Toast.makeText(context, "qwerty", Toast.LENGTH_LONG).show();
}
У меня служебная функция вызывает Toast.makeText() и эта функция вызывается из всех Activity.
Для вызова Toast в эту ф-ю каждый раз передаю ссылку на текущую Activity.
Можно ли обойтись без этого параметра и вызывать Toast со ссылкой на MainActivity?
Не будет ли каких-либо проблем?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2018, 08:46
Ответы с готовыми решениями:

Метод makeText в Toast - ошибка
Здравствуйте, помогите плз, новичку. В строке 81 - Toast.makeText(this, "Нажата кнорка Ok",Toast.LENGTH_LONG).show(); ...

Ошибка метода makeText в Toast (AIDE)
Здравствуйте. Редактирую код в AIDE на Android-смартфоне. Выскакивает вот такая ошибка: Вот сам код: package...

Toast.MakeText как сделать одновременно появляющимися
В программе много Toast.MakeText(this, "Finish() Market01", ToastLength.Short).Show(); Все они появляются один за другим, когда первый...

9
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
03.03.2018, 21:22
Вроде как любое активити потомок Context. Поэтому справедливо писать
Toast.makeText(Имя_активити.this, "qwerty", Toast.LENGTH_LONG).show(); Точно не помню, но вроде Toast в статических методах не работает.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
03.03.2018, 22:02
Зачем выносить куда-то строчку UI кода?
0
67 / 43 / 5
Регистрация: 24.08.2013
Сообщений: 678
03.03.2018, 23:23  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Зачем выносить куда-то строчку UI кода?
Я кастомизировал Toast и использую его во всех активити.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
03.03.2018, 23:33
Ну и, аля билдер лежит в другом классе, контекст ему не нужен, а показываешь тост свой в активити.
0
67 / 43 / 5
Регистрация: 24.08.2013
Сообщений: 678
03.03.2018, 23:39  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Ну и, аля билдер лежит в другом классе, контекст ему не нужен, а показываешь тост свой в активити.
Не понял. Безопасно ли передавать в Toast контекст MainActivity, вызывая ф-ю из других активити?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
06.03.2018, 19:08
Slon747, самый лучший выход - сделать BaseActivity, унаследовать от нее все активити и создать в ней protected метод с показом тоста. В качестве контекста в данном случае можно использовать this. Все активити смогут спокойно вызывать этот метод без всяких опасностей и т.п..
1
67 / 43 / 5
Регистрация: 24.08.2013
Сообщений: 678
06.03.2018, 20:04  [ТС]
Цитата Сообщение от Spelcrawler Посмотреть сообщение
самый лучший выход - сделать BaseActivity, унаследовать от нее все активити и создать в ней protected метод с показом тоста. В качестве контекста в данном случае можно использовать this. Все активити смогут спокойно вызывать этот метод без всяких опасностей и т.п..
Спасибо.
Но ведь в моем случае MainActivity всегда существует. Чисто теоретически, возможна какая-либо проблема?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
06.03.2018, 20:06
Цитата Сообщение от Slon747 Посмотреть сообщение
Но ведь в моем случае MainActivity всегда существует
Андроид не гарантирует ничего, особенно, что активити существует) Тем более вы хотите вызывать тост из других активити - MainActivity не на первом плане - может быть удалена.
1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.03.2018, 20:39
создаем класс наследник от Application (если он есть то добавляем туда только инициализацию)
Java
1
2
3
4
5
6
7
8
9
10
import android.app.Application;
 
public class MyApp extends Application {
 
    @Override
    public void onCreate() {
        super.onCreate();
        Show.init(this);
    }
}
прописываем этот класс в манифесте
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name="MyApp"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
строка android:name="MyApp"

сам класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.widget.Toast;
 
import java.lang.ref.WeakReference;
 
public class Show {
 
    private final WeakReference<Context> ref;
    private static Show instance;
 
    private Show(Context context) {
        ref = new WeakReference<>(context);
    }
 
    public static void init(@NonNull Context context) {
        instance = new Show(context);
    }
 
    public static void shortToast(@StringRes int id) {
        if (instance == null || instance.ref.get() == null) return;
        Toast.makeText(instance.ref.get(), id, Toast.LENGTH_SHORT).show();
    }
 
    public static void longToast(@StringRes int id) {
        if (instance == null || instance.ref.get() == null) return;
        Toast.makeText(instance.ref.get(), id, Toast.LENGTH_LONG).show();
    }
 
    public static void shortToast(String text) {
        if (instance == null || instance.ref.get() == null) return;
        Toast.makeText(instance.ref.get(), text, Toast.LENGTH_SHORT).show();
    }
 
    public static void longToast(String text) {
        if (instance == null || instance.ref.get() == null) return;
        Toast.makeText(instance.ref.get(), text, Toast.LENGTH_LONG).show();
    }
}
и в любом месте в любом классе показываем тосты
Show.longToast("ололо азаза");
все

на Котлине класс Show вообще скомкивается до неприлично малого размера, но это другая история
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2018, 20:39
Помогаю со студенческими работами здесь

Toast.js
Приветствую. Столкнулся с такой проблемой: Есть страница, на ней n-количество полей для ввода. Есть кнопка &quot;сформировать...

Toast duration
Подскажите как задать свое время Добавлено через 1 минуту только вот мне надо большое время задать например минута

Toast trouble
Все Доброго времени суток! Начал учить андроид по книге, там приводился код для создания кастомного тоста, код написал точь в точь , но на...

Не выводит Toast
всем привет. есть код: Toast.makeText(c, &quot;Start indexing...&quot;, Toast.LENGTH_LONG).show(); while...

Toast Notification
Подскажите, какую команду нужно дописать чтобы скрыть уведомление. $app =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru