Изменить виджет видимости при клике - PullRequest
7 голосов
/ 24 февраля 2012

Мой виджет состоит из двух относительных макетов.Я сделал оба макета кликабельными.Ниже приведены идентификаторы макета:

android:id="@+id/upper_layout" 
android:id="@+id/bottom_layout"

Теперь мне нужно то, что если пользователь нажимает на upper_layout, bottom_layout должен быть невидим

Вот то, что я пробовал до сих пор, но это не работает.Можете ли вы проверить, что я делаю не так?Или, может быть, предложить другие способы достижения этого.

Код:

public class BobsWidget extends AppWidgetProvider {

    public static String ACTION_WIDGET_RECEIVER = "Clicked";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                R.layout.main);
        Intent active = new Intent(context, BobsWidget.class);
        active.setAction(ACTION_WIDGET_RECEIVER);

        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context,
                0, active, 0);

        remoteViews.setOnClickPendingIntent(R.id.upper_layout,
                actionPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        // check, if our Action was called
        if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.main);
            remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE);
        }
        super.onReceive(context, intent);
    }

}

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

У вас есть несколько встроенных функций виджетов, доступных в Anndroid 3.0 или более версии. Проверьте эту ссылку

1 голос
/ 21 марта 2013

Я думаю, что вы забыли обновить виджет. Вы пробовали что-то подобное?

remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE);
final ComponentName provider = new ComponentName(context, this.getClass());
appWidgetManager.updateAppWidget(provider, views);
...