ホームスクリーンウィジェットにテキストビューコントロールをプログラムで追加したいと考えています。次の例では、LinearlayoutにTextViewsを設定しますが、ここでRemoteViewをどのように使用しますか?パラメータとしてxmlリソースレイアウトのみを受け入れます。私が見たプログラムでホームスクリーンウィジェットにTextViewを追加する
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は、AppWidgetProviderではなく、Activitiesクラスに対して定義されています。また、ウィジェットアクティビティクラスから呼び出すと、新しいウィンドウ(アクティビティ)が作成され、そこにコントロールが移入されます。では、AppWidgetProviderを継承するクラスのUpdateメソッドからRemoteViewを呼び出す必要がありますか?または、何らかの形でsetcontentviewを使用する方法がありますか? – kkgery