2013-07-20 3 views
0

Привет, прежде всего, я извиняюсь за мой плохой английский. Как установить RemoteViews .setViewVisibility? Я хочу скрыть кнопку виджета, когда я нажимаю на нее. Вот мой код. Спасибо за помощь.Как установить видимость кнопки Widget?

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

    final int N = appWidgetIds.length; 
    for (int i = 0; i < N; i++){ 

     int appId = appWidgetIds[i]; 
     widget = new RemoteViews(context.getPackageName(), R.layout.widget_wyglad); 
     Intent Tv = new Intent(context, client_widget.class); 
     Tv.setAction(AKCJA); 
     Tv.putExtra("test", AKCJA); 
     PendingIntent ptv = PendingIntent.getBroadcast(context, 0, Tv, 0); 
     widget.setOnClickPendingIntent(R.id.bt_wid_tv, ptv); 
     appWidgetManager.updateAppWidget(appId, widget); 
    } 

    super.onUpdate(context, appWidgetManager, appWidgetIds); 
} 

@Override 
public void onReceive(Context context, Intent intent) { 

    Bundle extras = intent.getExtras(); 
    if (extras != null){ 

     widget.setViewVisibility(R.id.bt_wid_tv, View.GONE); 

    } 
    else {Log.d("ERR", "EXTRAS ELSE");} 

    super.onReceive(context, intent); 

} 

} 

ответ

0

Вы все сделали правильно, сделав вид скрытым. просто включить это в code-

В вашем OnReceive ме-

if (intent.getAction().equals(AKCJA)) { 
widget.setViewVisibility(R.id.bt_wid_tv, View.GONE); 
} 
+0

Стараюсь оба решения и ничего не случилось. Должен ли я попробовать обновления виджета после: widget.setViewVisibility (R.id.bt_wid_tv, View.GONE) – Gillven

+0

yes..exactly..after изменяя вид всегда использовать этот code- appWidgetManager.updateAppWidget (APPID, виджет) ; – Naddy

-1

Вы пробовали использовать INVISIBLE вместо GONE? Gone удалит представление, как будто его там никогда не было. И невидимое будет удерживать место просмотра в макете, но сделать его невидимым.

rv.setViewVisibility(R.id.bt_wid_tv, View. INVISIBLE); 
-2

Да, это, наконец, работать, Там то, что я изменить:

int appId = appWidgetIds[i]; 

изменение:

appId = appWidgetIds[i]; 

следующий я добавить статический Int APPID:

public class client_widget extends AppWidgetProvider { 

static int appId; 

наконец добавьте этот новый A ppWidgetManager и обновление строки:

public void onReceive(Context context, Intent intent) { 

AppWidgetManager newAppWidgetManager = AppWidgetManager.getInstance(context); 

     if (intent.getAction().equals(AKCJA)) { 
      AppWidgetManager nowy = AppWidgetManager.getInstance(context); 

      widget.setViewVisibility(R.id.bt_wid_tv, View.GONE); 

      newAppWidgetManager.updateAppWidget(appId, widget); 

Благодаря @Naddy