如何将文本附加到小部件中的 TextView?
How do I append text to a TextView in a widget?
我正在编写一个仅包含 TextView 的简单 android 小部件。这是我的 AppWidgetProvider 代码:
public class EventsWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int widgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.events_widget);
remoteViews.setTextViewText(R.id.textView, "foo");
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
}
这只是使用 RemoteViews.setTextViewText
将文本视图文本设置为 "foo",并且有效。
但是没有RemoteViews.appendTextViewText
。如果我想将 "bar" 附加到文本视图,我该怎么办?
事实证明你真的做不到。虽然这有效:
remoteViews.setCharSequence(R.id.textView, "setText", charSequence);
这会引发错误。
remoteViews.setCharSequence(R.id.textView, "append", charSequence);
错误:android.widget.RemoteViews$ActionException: view: android.widget.TextView can't use method with RemoteViews: append(interface java.lang.CharSequence)
编辑:根据 this answer,您只能使用带有 @RemotableViewMethod
注释的方法。
我正在编写一个仅包含 TextView 的简单 android 小部件。这是我的 AppWidgetProvider 代码:
public class EventsWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int widgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.events_widget);
remoteViews.setTextViewText(R.id.textView, "foo");
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
}
这只是使用 RemoteViews.setTextViewText
将文本视图文本设置为 "foo",并且有效。
但是没有RemoteViews.appendTextViewText
。如果我想将 "bar" 附加到文本视图,我该怎么办?
事实证明你真的做不到。虽然这有效:
remoteViews.setCharSequence(R.id.textView, "setText", charSequence);
这会引发错误。
remoteViews.setCharSequence(R.id.textView, "append", charSequence);
错误:android.widget.RemoteViews$ActionException: view: android.widget.TextView can't use method with RemoteViews: append(interface java.lang.CharSequence)
编辑:根据 this answer,您只能使用带有 @RemotableViewMethod
注释的方法。