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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
#1

Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? - Программирование Android

12.11.2012, 16:08. Просмотров 1522. Ответов 11
Метки нет (Все метки)

Попытался так сделать, все везде написал и в provider и в manifest, но все равно при добавлении второго виджета вылетает активити первого виджета
Может так нельзя делать?
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 16:08     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек?
Посмотрите здесь:
Порядок открытия активити в проекте Android
Код для двух кнопок в одном активити Android
Как будет меняться стек активити Android
Что будет в случае пересоздания активити Android
Android Можно ли скопировать текст в одном активити, и вставить через буфер обмена в другое?
Android Bluetooth и два активити
Зачем нужно два onResume() в Активити? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 16:15     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #2
чем мотивирует свой вылет активити первого виджета?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
12.11.2012, 16:36  [ТС]     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #3
Цитата Сообщение от V0v1k Посмотреть сообщение
чем мотивирует свой вылет активити первого виджета?
Не совсем понял вопрос, извините.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 16:58     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #4
если вылетает, значит на это есть причина и она написана в логах.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
12.11.2012, 17:22  [ТС]     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #5
Цитата Сообщение от V0v1k Посмотреть сообщение
если вылетает, значит на это есть причина и она написана в логах.
Прошу прощения. Вылетает не значит аварийно завершается, а просто открывается вместо нужного активити. Если вы это и имели ввиду, то где искать логи? apk сразу устанавливается на телефон

Добавлено через 19 минут
А что означает содержание файла lint.xml?

Java
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="ObsoleteLayoutParam">
        <ignore path="res\layout\activity_preferences.xml" />
    </issue>
    <issue id="UselessParent">
        <ignore path="res\layout\widget_layout.xml" />
    </issue>
</lint>
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 18:46     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #6
Цитата Сообщение от dubok79 Посмотреть сообщение
а просто открывается вместо нужного активити.
значит вы указали открывать это активити вместо нужного.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
12.11.2012, 18:56  [ТС]     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #7
Цитата Сообщение от V0v1k Посмотреть сообщение
значит вы указали открывать это активити вместо нужного.
А где это указывается? В манифесте?
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
41
42
43
44
45
46
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <receiver
            android:name=".WidgetActivity"
            android:label="@string/widget_title" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
 
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_provider" />
        </receiver>
 
        <activity
            android:name=".PreferencesActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/widget_preferences_title"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>
 
        <receiver
            android:name=".Widget_1x1_Activity"
            android:label="@string/widget_1x1_title" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
 
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_1x1_provider" />
        </receiver>
 
        <activity
            android:name=".Preferences_1x1_Activity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/widget_preferences_title"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>
Java
1
2
3
4
5
6
7
8
9
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minHeight="64dp" 
    android:minWidth="294dp"
    android:updatePeriodMillis="3600000"
    android:initialLayout="@layout/widget_layout"
    android:focusable="true" 
    android:configure=".Preferences_Activity"
    android:previewImage="@drawable/widget_preview_image">
</appwidget-provider>
Java
1
2
3
4
5
6
7
8
9
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minHeight="64dp" 
    android:minWidth="64dp"
    android:updatePeriodMillis="3600000"
    android:initialLayout="@layout/widget_1x1_layout"
    android:focusable="true" 
    android:configure=".Preferences_1x1_Activity"
    android:previewImage="@drawable/widget_1x1_preview_image">
</appwidget-provider>
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 19:04     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #8
покажите еще код обеих активитей.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
13.11.2012, 06:05  [ТС]     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #9
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
41
package com.daa.widget;
 
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;
 
public class WidgetActivity extends AppWidgetProvider {
    public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
    public static String URI_SCHEME = "ABC";
    
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }
 
    public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
 
        RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        updateViews.setTextViewText(R.id.line_info_1, "Hello"); 
        
        Intent configIntent = new Intent(context, PreferencesActivity.class);
        configIntent.setAction(ACTION_WIDGET_CONFIGURE);
        Uri data = Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"),String.valueOf(appWidgetId));
        configIntent.setData(data);
        PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
        updateViews.setOnClickPendingIntent(R.id.widget_imageview, configPendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, updateViews);
    }
 
}
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
41
package com.daa.widget;
 
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;
 
public class WidgetActivity extends AppWidgetProvider {
    public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
    public static String URI_SCHEME = "ABC";
    
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }
 
    public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
 
        RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_1x1_layout);
        updateViews.setTextViewText(R.id.widget_1x1_line_info, "Hello");    
        
        Intent configIntent = new Intent(context, Preferences_1x1_Activity.class);
        configIntent.setAction(ACTION_WIDGET_CONFIGURE);
        Uri data = Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"),String.valueOf(appWidgetId));
        configIntent.setData(data);
        PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
        updateViews.setOnClickPendingIntent(R.id.widget_1x1_imageview, configPendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, updateViews);
    }
 
}
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.11.2012, 13:24     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #10
вы вместо активитей дважды скопировали код виджета.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
14.11.2012, 12:11  [ТС]     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #11
Пока вставлял код активитей, нашел ошибку:
вот в этой строке setContentView(R.layout.activity_preferences); указал не тот layout

P.S. будут ли какие либо проблемы, если в одном проекте у двух активитей будут контролы (View) с одинаковыми ид?

Добавлено через 2 часа 42 минуты
Как то все равно непонятно и глючно работает.
Новый виджет размером 1х1 добавляется, открывается нужое активити его настроек, но после закрытия активити обновление виджета идет кодом из большего виджета. Далее если обновить все виджеты то маленькие считывают настройки откуда нужно и все хорошо. по тапу на нем снова открывается нужное окно, но после его закрытия опять как с самого начала, мало того по тапу уже начинает открываться активити настроек большего виджета. Никак не пойму в чем дело

Добавлено через 19 минут
уфф... нашел , оказывается я вызывал функцию обновления виджета из другого кода .... безобразие
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 21:39     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек?
Еще ссылки по теме:
Android Создать активити которе будет закрываться только при выполнении условия
Android Что будет контроллером в проекте по модели MVC
Android Сколько активностей может быть
Android Где в проекте Android Studio лучше добавлять элементы в БД SQL?
Разъясните гуру как такое может быть! Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.11.2012, 21:39     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек? #12
Цитата Сообщение от dubok79 Посмотреть сообщение
вот в этой строке setContentView(R.layout.activity_preferences); указал не тот layout
так и думал


Цитата Сообщение от dubok79 Посмотреть сообщение
будут ли какие либо проблемы, если в одном проекте у двух активитей будут контролы (View) с одинаковыми ид?
нет
Yandex
Объявления
14.11.2012, 21:39     Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек?
Ответ Создать тему
Опции темы

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