2010-11-02 20 views
8

Ich habe ein App-Widget und ich möchte Ansichten hinzufügen (TextView, etc.,) zu RemoteView, aber es wird nie angezeigt.
geht hier den Code:RemoteView addView funktioniert nicht

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); 

Irgendwelche Ideen?


Dies ist, was ich tun endete:

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

Sie sollten entweder Ihre Lösung als Antwort hinzufügen und sie als solche markieren oder eine vorhandene Antwort als Lösung auswählen. Sonst hängt das da draußen als unbeantwortet ... –

+1

Ja, ich stimme mit hambonious überein, markiere das als beantwortet und gib dem Mann etwas Kredit! – JPM

Antwort

25

Die addView() -Methode die ID der Ansicht muss innerhalb des Layout, das Sie diese neue Ansicht hinzufügen möchten, nicht das Layout selbst.

Statt dessen:

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

Try this:

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

Ihr Layout sieht wie folgt aus etwas Unter der Annahme:

Datei: 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

Das ist, was ich am Ende getan habe: –

+0

Großartig! Genau das habe ich gebraucht. Vielen Dank, hambonious. – Hubert

+1

Ausgezeichnete Antwort Respekt ++. –