Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Namide
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 29
#1

Вызов Activity на клик по виджету - Android

21.02.2014, 13:08. Просмотров 895. Ответов 8
Метки нет (Все метки)

Собственно, начитался статей, и написал вот это:
Java
1
2
3
4
5
6
7
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        RemoteViews widgetView = new RemoteViews(context.getPackageName(), R.layout.widget);
        Intent configIntent = new Intent(context, SettingsActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
        widgetView.setOnClickPendingIntent(R.layout.widget, pIntent);
    }
К сожалению, ноль реакции на нажатие. Я пока в этой теме плаваю, так что, наверняка, написал какую-то чушь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 13:08     Вызов Activity на клик по виджету
Посмотрите здесь:

Вызов activity повторно android Android
Canvas и Activity Android
Приостановка Activity Android
Activity с авторизацией Android
Android Создание и вызов второго Activity
Activity Android
Доступ к виджету фрагмента Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
21.02.2014, 13:14     Вызов Activity на клик по виджету #2
Java
1
widgetView.setOnClickPendingIntent(R.layout.widget, pIntent);
Мне кажется, здесь вместо R.layout.widget нужно передавать view id.
Namide
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 29
21.02.2014, 15:35  [ТС]     Вызов Activity на клик по виджету #3
Поменял эту строчку на
Java
1
widgetView.setOnClickPendingIntent(R.id.widget, pIntent);
Всё равно не работает.
На всякий случай вот код виджета
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:padding="@dimen/widget_margin"
    android:configure="ru.weathertoday.SettingsActivity" >
 
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#6600ff00"
        android:gravity="center"
        android:text="@string/pref_city"
        android:textColor="#000"
        android:textSize="18sp" />
 
</LinearLayout>
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
package ru.weathertoday;
 
 
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
 
 
public class Widget extends AppWidgetProvider {
    @Override
    public void onEnabled(Context context) {
        super.onEnabled(context);
    }
    
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
    }
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        RemoteViews widgetView = new RemoteViews(context.getPackageName(), R.layout.widget);
        Intent configIntent = new Intent(context, SettingsActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
        widgetView.setOnClickPendingIntent(R.id.widget, pIntent);
 
 
    }
 
    @Override
    public void onDisabled(Context context) {
        super.onDisabled(context);
    }
}
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
25.02.2014, 10:56     Вызов Activity на клик по виджету #4
Namide, попробуйте на textview клик обработать или на LinearLayout добавить android:clickable="true", хотя у меня и без него работает, но я на LinearLayout вешаю ImageView и клик вешаю на него - попробуйте и вы.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
26.02.2014, 13:14     Вызов Activity на клик по виджету #5
И кстати у вас в provider стоит значение: android:focusable="true" ?
Namide
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 29
26.02.2014, 16:05  [ТС]     Вызов Activity на клик по виджету #6
dubok79,
Цитата Сообщение от dubok79 Посмотреть сообщение
попробуйте на textview клик обработать или на LinearLayout добавить android:clickable="true", хотя у меня и без него работает, но я на LinearLayout вешаю ImageView и клик вешаю на него - попробуйте и вы.
Попробовал, не помогает.
Цитата Сообщение от dubok79 Посмотреть сообщение
И кстати у вас в provider стоит значение: android:focusable="true" ?
Извините за глупый вопрос, но это где?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
26.02.2014, 16:15     Вызов Activity на клик по виджету #7
Цитата Сообщение от Namide Посмотреть сообщение
Извините за глупый вопрос, но это где?
res/xml/<наименование>.xml
ну вот с таким примерно содержанием:
XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="40dp"
    android:minHeight="40dp" 
    android:updatePeriodMillis="3600000"
    android:initialLayout="@layout/widget_layout"
    android:focusable="true" 
    android:configure="ru.alexeydubinin.lineyka.PreferencesActivity"
    android:previewImage="@drawable/widget_preview_image">
</appwidget-provider>
Ну он точно у вас без него никак
Namide
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 29
26.02.2014, 17:21  [ТС]     Вызов Activity на клик по виджету #8
dubok79, не было. Добавил строчку, теперь код там такой:
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget"
    android:focusable="true"
     android:minHeight="40dp"
     android:minWidth="40dp"
    android:updatePeriodMillis="2400000">
</appwidget-provider>
И почему-то в логе клик по виджету отображается как
02-26 17:18:36.396: D/FSCommand(556): [AppContactManager] tapWallpaper x = 59, y = 498
Так и должно быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 17:24     Вызов Activity на клик по виджету
Еще ссылки по теме:

Вызов метода из другого Activity Android
Android Асинхронный вызов в первом Activity
Клик по виджету Android
Android Basic Activity
Android Вывод activity в activity

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

Или воспользуйтесь поиском по форуму:
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
26.02.2014, 17:24     Вызов Activity на клик по виджету #9
Цитата Сообщение от Namide Посмотреть сообщение
Так и должно быть?
Не могу сказать. Не обращал внимания.
Yandex
Объявления
26.02.2014, 17:24     Вызов Activity на клик по виджету
Ответ Создать тему
Опции темы

Текущее время: 05:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru