2010-11-02 2 views
8

У меня есть виджет приложения, и я хотел бы добавить Views (TextView и т. Д.) В RemoteView, но он никогда не появляется.
Здесь идет код:RemoteView addView не работает

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

Любые идеи?


Это то, что я в конечном итоге делает:

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

Вы должны либо добавить свое решение в качестве ответа, либо пометить его как таковое или выбрать существующий ответ в качестве решения. В противном случае это просто болтается там, как без ответа ... –

+1

Да, я согласен с храбрым, отмечаю это как ответ и даю человеку некоторую оценку! – JPM

ответ

25

addView() метод требует идентификатор точки зрения внутри макета, который вы хотите добавить этот новый взгляд на, а не макет сам.

Вместо этого:

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

Попробуйте это:

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

Предположим, что ваш макет выглядит примерно так:

файла: макет/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

Это то, что я закончил: –

+0

Отлично! Это именно то, что мне нужно. Большое спасибо храбрым. – Hubert

+1

Отличный ответ Respect ++. –

Смежные вопросы