Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
1

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

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

Попытался так сделать, все везде написал и в provider и в manifest, но все равно при добавлении второго виджета вылетает активити первого виджета
Может так нельзя делать?
Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 16:08
Ответы с готовыми решениями:

Как создать базу данных для сайта,где может быть много значений в одном поле
Может немного глуповатый вопрос,но все же... Есть база данных и сайт,допустим...

Как использовать два winsock контрола в одном проекте
Не получается работать с двумя winsock контролами, второй не подключается.

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

Как связать два cpp файла в одном проекте (visual studio 2010)
Есть два программы: одна создает файл.txt, вторая читает из него данные и...

Как сделать, чтобы два проекта с разной кодировкой работали в одном объединённом проекте?
Добрый день подскажите есть два проекта в одном стоит многобайтовая кодировка в...

11
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 16:15 2
чем мотивирует свой вылет активити первого виджета?
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
12.11.2012, 16:36  [ТС] 3
Цитата Сообщение от V0v1k Посмотреть сообщение
чем мотивирует свой вылет активити первого виджета?
Не совсем понял вопрос, извините.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 16:58 4
если вылетает, значит на это есть причина и она написана в логах.
0
dubok79
324 / 122 / 10
Регистрация: 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>
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 18:46 6
Цитата Сообщение от dubok79 Посмотреть сообщение
а просто открывается вместо нужного активити.
значит вы указали открывать это активити вместо нужного.
0
dubok79
324 / 122 / 10
Регистрация: 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>
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2012, 19:04 8
покажите еще код обеих активитей.
0
dubok79
324 / 122 / 10
Регистрация: 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);
    }
 
}
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.11.2012, 13:24 10
вы вместо активитей дважды скопировали код виджета.
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
14.11.2012, 12:11  [ТС] 11
Пока вставлял код активитей, нашел ошибку:
вот в этой строке setContentView(R.layout.activity_preferences); указал не тот layout

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

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

Добавлено через 19 минут
уфф... нашел , оказывается я вызывал функцию обновления виджета из другого кода .... безобразие
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.11.2012, 21:39 12
Цитата Сообщение от dubok79 Посмотреть сообщение
вот в этой строке setContentView(R.layout.activity_preferences); указал не тот layout
так и думал


Цитата Сообщение от dubok79 Посмотреть сообщение
будут ли какие либо проблемы, если в одном проекте у двух активитей будут контролы (View) с одинаковыми ид?
нет
1
14.11.2012, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 21:39

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
написать универсальный тип, который представляет точку на плоскости в...

как правильно сделать в одном запросе может быть несколько подзапросов
Народ подскажите как правильно сделать запрос SELECT id,title FROM table...

Как и где объявить строковую переменную, которая будет использоваться во всем проекте?
Как и где объявить строковую переменную, которая будет использоваться во всем...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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