2010-11-02 14 views
8

Ho un widget di app e vorrei aggiungere Views (TextView, ecc.) Allo RemoteView ma non si presenta mai.
Qui va il codice:RemoteView addView non funziona

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); 
RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.widget_row_layout); 
    newView.setTextViewText(R.id.textUser, "1234"); 
    views.addView(views.getLayoutId(), newView); 
// Tell the AppWidgetManager to perform an update on the current App Widget 
appWidgetManager.updateAppWidget(appWidgetId, views); 

Tutte le idee?


Questo è quello che ho finito per fare:

RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.widget_row_layout); 
    newView.setTextViewText(R.id.textUser, "1234"); 
ComponentName thisWidget = new ComponentName(this,WidgetProvider.class); 
AppWidgetManager manager = AppWidgetManager.getInstance(this); 
    manager.updateAppWidget(thisWidget, newView); 
+1

È necessario aggiungere la soluzione come risposta e contrassegnarla come tale oppure selezionare una risposta esistente come soluzione. Altrimenti, questo è semplicemente sospeso là fuori come senza risposta ... –

+1

Sì, sono d'accordo con Hambonious, segna questo come risposta e dai un po 'di credito all'uomo! – JPM

risposta

25

L'addView() metodo ha bisogno l'id della vista all'interno del layout che si desidera aggiungere questo nuovo vista, non il layout si.

Invece di questo:

views.addView(views.getLayoutId(), newView); 

Prova questo:

views.addView(R.id.view_container, newView); 

Supponendo che il layout sembra qualcosa di simile:

di file: layout/widget_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:id="@+id/view_container" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <!-- New views will be added here at runtime --> 
    </LinearLayout> 
</LinearLayout> 
+0

Questo è quello che ho finito per fare: –

+0

Grande! Questo è esattamente ciò di cui avevo bisogno. Grazie mille ambrato. – Hubert

+1

Ottima risposta Rispetto ++. –

Problemi correlati