Урок 120. Виджеты. Обработка нажатий

Обсуждение уроков
underworlddemon
Сообщения: 7
Зарегистрирован: 07 май 2013, 22:23

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение underworlddemon » 13 фев 2014, 05:30

SevenXP
твоя проблема решается через сервис
сервис проигрывает музыку
приложение управляет сервисом посылая команды лично ему
виджет управляет сервисом посылая команды лично ему
Profit

У меня вопрос более сложный:
Виджет нужен для запуска активити, но не главного
а этому активити нужны данные с главного
как запускать правильнее ?
мои реализация не работает:
запускаю активити и передаю через интент boolean
в OnCreate активити видит, что есть Extra и меняет переменную "запущено_из_виджета"
в OnPostResume проверяю, что запуск через виджет (установленная в OnCreate переменная "запущено_из_виджета") и запускаю нужную мне активити с данными из главного
в итоге Fail
ибо данные не переданы
если же запускать нужную мне активити через кнопку на главном активити, то все данные необходимые передаются
что я делаю не так ?

з.ы. данные нужные мне требуемом активити - координаты и кое что ещё...

denis_po3
Сообщения: 14
Зарегистрирован: 01 ноя 2013, 15:45

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение denis_po3 » 23 май 2014, 11:27

Опечатка: "Читаем значение счетчика и, если это значения еще нет в Preferences, то пишем туда 0."

Аватара пользователя
FastRus1804
Сообщения: 49
Зарегистрирован: 22 июн 2014, 11:20

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение FastRus1804 » 16 ноя 2014, 12:23

Как строятся виджеты и конфигурационный экран всё понятно. Но по поводу нажатия не понял ничего. Объясните пожалуйста подробнее про то как работают нажатия и можно ли при помощи нажатия совершать действия в другом приложении?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение doter.ua » 16 ноя 2014, 14:31

FastRus1804 писал(а):Как строятся виджеты и конфигурационный экран всё понятно. Но по поводу нажатия не понял ничего. Объясните пожалуйста подробнее про то как работают нажатия и можно ли при помощи нажатия совершать действия в другом приложении?
Если ты смотрел урок, то там было про RemoteViews с помощью которого настраиваются элементы.
С его помощью можно задать событие по клику:

Код: Выделить всё

setOnClickPendingIntent(R.id.ид_элемента_виджета, pIntent);
Где pIntent

Код: Выделить всё

PendingIntent pIntent = PendingIntent.getActivity( ctx, widgetID, configIntent, 0);
В котором configIntent

Код: Выделить всё

Intent configIntent = new Intent(ctx, ConfigActivity.class);
Итак: с помощью RemoteViews и PendingIntent можно настроить интент который запустит что-нибудь, например активити. У разработчика на 120 уроке не должно возникать вопросов: "что делать с пришедшем интентом в активити". Разве что если интентов много (из разных мест) можно сделать проверку по requestcode или по int в extras это уже на вашу фантазию.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
FastRus1804
Сообщения: 49
Зарегистрирован: 22 июн 2014, 11:20

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение FastRus1804 » 16 ноя 2014, 20:28

doter.ua писал(а):
FastRus1804 писал(а):Как строятся виджеты и конфигурационный экран всё понятно. Но по поводу нажатия не понял ничего. Объясните пожалуйста подробнее про то как работают нажатия и можно ли при помощи нажатия совершать действия в другом приложении?
Если ты смотрел урок, то там было про RemoteViews с помощью которого настраиваются элементы.
С его помощью можно задать событие по клику:

Код: Выделить всё

setOnClickPendingIntent(R.id.ид_элемента_виджета, pIntent);
Где pIntent

Код: Выделить всё

PendingIntent pIntent = PendingIntent.getActivity( ctx, widgetID, configIntent, 0);
В котором configIntent

Код: Выделить всё

Intent configIntent = new Intent(ctx, ConfigActivity.class);
Итак: с помощью RemoteViews и PendingIntent можно настроить интент который запустит что-нибудь, например активити. У разработчика на 120 уроке не должно возникать вопросов: "что делать с пришедшем интентом в активити". Разве что если интентов много (из разных мест) можно сделать проверку по requestcode или по int в extras это уже на вашу фантазию.

Я понял это примерно так:

Intent configIntent = new Intent(ctx, ConfigActivity.class);
// вызываем интент экрана конфигурации
configIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
// без понятия зачем это
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
// записывает данные с id виджета
PendingIntent pIntent = PendingIntent.getActivity(ctx, widgetID,
configIntent, 0);
//создаём пендинг интетнт для вызова активити
widgetView.setOnClickPendingIntent(R.id.tvPressConfig, pIntent);
// и как бы говорим что при нажатии на tvPressConfig вызывался pIntent.

только вот это действия связанные с настройкой или обновлением виджета. А как при помощи нажатия на tvPressConfig скажем сайт открыть или в другое приложение зайти или с сервисом взаимодействовать?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение doter.ua » 24 ноя 2014, 01:23

Вместо PendingIntent.getActivity можно использовать getBroadcast или getService, соответсвенно в интенте будет указан класс сервиса или бродкаста (его ресивера). new Intent(ctx, Какая-то_штука.class);
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

fayloobmennik
Сообщения: 1
Зарегистрирован: 09 фев 2015, 22:44

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение fayloobmennik » 09 фев 2015, 22:49

у меня у одного выпадает главный экран и ничего не работает? все по коду, основываясь на 118 и 119 уроках, но чтоб завершалось приложение главный экран это нонсенс.

yaskoroid
Сообщения: 1
Зарегистрирован: 18 май 2015, 00:16

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение yaskoroid » 18 май 2015, 00:22

Сделал все как в уроке. Ошибок Эклипс не выдавал. Установил приложение на телефон, версия андроид 4.2.1, и не работает. Вообще после установки, кнопка "Готово" активна, а "открыть" неактивна. В AVD пишет на русском если, то что-то вроде "Приложение не установлено на этом устройстве".

Yarik1979
Сообщения: 1
Зарегистрирован: 27 ноя 2015, 12:05

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение Yarik1979 » 27 ноя 2015, 12:46

Добрый день.Сделал виджет по нажатию на который открывается окно настроек WiFi, но не могу сделать так чтоб по нажатию сразу включался WiFi. WiFi включается сразу только при первой установке виджета.

Код: Выделить всё

    
@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
         WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
           Intent active1 = new Intent(wifiManager.ACTION_PICK_WIFI_NETWORK);
            active1.putExtra("f", true);
           boolean g;
          g = active1.getExtras().getBoolean("f");
           wifiManager.setWifiEnabled(g);
          RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
        //Подготавливаем Intent для Broadcast
        //создаем наше событие
        PendingIntent actionPendingIntent = PendingIntent.getActivity(context, 0, active1, 0);
        //регистрируем наше событие
        views.setOnClickPendingIntent(R.id.imageButton, actionPendingIntent);
        //обновляем виджет
         appWidgetManager.updateAppWidget(appWidgetIds, views);
         }

shirakz
Сообщения: 9
Зарегистрирован: 23 сен 2015, 20:33

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение shirakz » 16 мар 2016, 12:38

Почему метод статический:
static void updateWidget(Context ctx, AppWidgetManager appWidgetManager, int widgetID)
???

Дима
Сообщения: 3
Зарегистрирован: 12 авг 2013, 12:52

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение Дима » 15 янв 2017, 19:12

Всем привет. Допилил этот пример. Время установил сразу при создании виджета и оно каждый раз будет его читать. Правильная реализайия? Есть мож какие другие варианты? Формат времени при таком решении не дает возможность меняться. Спасибо

Дима
Сообщения: 3
Зарегистрирован: 12 авг 2013, 12:52

Re: Урок 120. Виджеты. Обработка нажатий

Сообщение Дима » 15 янв 2017, 19:20

shirakz писал(а):Почему метод статический:
static void updateWidget(Context ctx, AppWidgetManager appWidgetManager, int widgetID)
???
Это с 118 или 119 урока для того чтоб присоздании виджета настройки вступали в силу. Тоесть тебе надо достучаться до этого метода не создавая объект.

Ответить