【发布时间】:2013-08-03 16:40:11
【问题描述】:
如何访问主屏幕Widget 的项目,以便对它们进行更改,例如设置Button 的文本?在我的AppWidgetProvider 的onReceive() 方法中,我试图设置Button 的文本,它位于我的主屏幕小部件中:
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(MainActivity.ACTION_CHANGE_BUTTONSTATE))
{
String state = intent.getExtras().getString("state");
Log.d("HomescreenWidget", "received broadcast for button state");
RemoteViews views = new RemoteViews(context.getPackageName(),
R.id.widgetButton);
views.setTextViewText(R.id.widgetButton, state);
ComponentName cn = new ComponentName(context,
HomescreenWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, views);
}
super.onReceive(context, intent);
}
我的小部件的layout.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/widget_margin" >
<Button
android:id="@+id/playButton_Widget"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:minWidth="80dp"
android:text="@string/playButton" />
</RelativeLayout>
我收到了Broadcast,但随后我的Widget 显示以下文本:“问题加载小部件”。
编辑 我在目录日志中发现了以下消息:
W/AppWidgetHostView(135): updateAppWidget couldn't find any view, using error view
W/AppWidgetHostView(135): android.widget.RemoteViews$ActionException: can't find view: 0x7f0a0004
0x7f0a0004 是我的Widget 的Button。找不到的原因是什么?
【问题讨论】:
-
抱歉,只是想再次确认您想从主屏幕小部件更改应用中的某些视图?
-
我有一个
Button属于主屏幕Widget的layout。按下此按钮时,我想更改其文本标签。为此,我需要参考它 -
主屏幕小部件中的文本标签?
-
a
Button,一个按钮,位于主屏幕小部件中。这个按钮有一个像这样的文本标签:lh4.googleusercontent.com/_VZJksQ6kepc/TZCBDL7bqnI/AAAAAAAAAC8/…
标签: android widget homescreen remoteview appwidgetprovider