Я хочу программным образом добавить элементы управления Text Views в свой виджет главного экрана. В следующем примере я заполняю Linearlayout с помощью TextViews, но как я должен использовать RemoteViews здесь? Он принимает только макет ресурсов xml в качестве параметра.Добавление текстовых окон в виджет главного экрана программно
public class MyWidget extends AppWidgetProvider {
public void onUpdate(Context _context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
LinearLayout l = new LinearLayout(_context);
for (int i = 0; i < 10; i++) {
TextView t = new TextView(_context);
t.setText("Hello");
l.addView(t);
}
}
}
Все учебники я видел, явно населяющие RemoteViews объект со значениями для его предопределенных элементов управления. И я хочу добавить программные средства управления.
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.my_widget);
views.setTextViewText(R.id.widget_control1, value1);
views.setTextViewText(R.id.widget_control2, value2);
Спасибо, я отредактировал мой вопрос немного, моя точка зрения, как я должен обрабатывать RemoteViews, так как кажется, управлять виджет раскладкой. Если я вызову setContentView (l), я должен также позвонить в RemoteViews? – kkgery
Для этого вы этого не сделаете. –
Кажется, что это не работает. SetContentView определен для класса Activities, а не для AppWidgetProvider. И если я вызываю его из класса Activity Activity, он создает новое окно (активность) и заполняет элементы управления там. Так что мне нужно вызвать RemoteViews из метода Update класса, расширяющего AppWidgetProvider? Или есть способ использовать setcontentview каким-то образом? – kkgery