2010-11-02 10 views
8

J'ai un widget d'application et je voudrais ajouter des vues (TextView, etc.) au RemoteView mais il n'apparaît jamais.
va ici le code:RemoteView addView ne fonctionne pas

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

Toutes les idées?


C'est ce que je fini par faire:

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

Vous devez soit ajouter votre solution en tant que réponse et la marquer comme telle, soit sélectionner une réponse existante comme solution. Sinon c'est juste traîner là-bas comme sans réponse ... –

+1

Ouais je suis d'accord avec les hamburgers, notez ceci comme étant répondu et donnez du crédit à l'homme! – JPM

Répondre

25

La méthode addView() a besoin de l'identifiant de la vue dans la mise en page que vous voulez ajouter cette nouvelle vue, et non pas la mise en page lui-même.

Au lieu de cela:

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

Essayez ceci:

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

En supposant que votre mise en page ressemble à quelque chose comme ceci:

fichier

: 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

C'est ce que j'ai fini par faire: –

+0

Super! C'est exactement ce dont j'avais besoin. Merci beaucoup, honteux. – Hubert

+1

Excellente réponse Respect ++. –