【发布时间】:2012-02-12 03:03:43
【问题描述】:
基本上我有这个小部件,它应该在点击后显示一个 Toast。
public class WidgetActivity extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent(context, WidgetActivity.class);
intent.setAction("ActionOne");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.LinLayWiget, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
Log.e("YYY","YYYY");
Toast.makeText(context, "AAA", 1500).show();
if (intent.getAction().equals("ActionOne")) {
Log.e("X","X");
Toast.makeText(context, "I'm CLICKED!", 1500).show();
}
super.onReceive(context, intent);
}
}
清单:
...
<receiver android:name="WidgetActivity" android:label="FXMaster" android:icon="@drawable/assiconwi">
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widgetprovider" />
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>
</receiver>
...
但是一旦点击了小部件,什么都不会发生。有什么想法可能是错的吗?
谢谢!
【问题讨论】:
-
你看到它进入了 OnResume 函数吗?像调试一样?如果在那里你看到不同的动作?附言可能最好使用 "ActionOne".equals(intent.getAction()) 来避免可能的空指针:-)
-
另外我假设你的 AndroidManifest.xml 中有 'package="Fart.Widget"' 对吗?通常最好使用...new RemoteViews(context.getPackageName(), R.layout.widget_layout);
-
感谢杰基的提示!我已经编辑了代码,见上文,但仍然没有结果。 :(
-
可能无法点击“LinLayWiget”元素?尝试添加图像或按钮并检查结果?
标签: android