作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要在单击小部件时执行更多操作,使用此代码,onclick 操作仅打开一个 Activity ,是否可以添加一个 onClickListener,我可以在其中添加更多代码和操作,例如在 Activity 中运行,以便在 Activity 打开之前运行? 这是我的代码。
public class WidgetActivity extends AppWidgetProvider{
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];
Intent int1=new Intent();
int1.setClass(context, Splash.class);
PendingIntent pend1=PendingIntent.getActivity(context, 0, int1, 0);
RemoteViews view1=new RemoteViews(context.getPackageName(),
R.layout.widget_main_1);
view1.setOnClickPendingIntent(R.id.repClear, pend1);
appWidgetManager.updateAppWidget(appWidgetId, view1);
}
}
我想在点击图像 1 上的图标时执行此操作,然后像图像 2 中那样在图标 onClick 周围画 6 个圆圈。请帮助我。
最佳答案
I need to perform more operations when widget is clicked, with this code the onclick action only opens an activity, is it possible to add a onClickListener where I can add more code and operations like in Activities to run before activities opening?
在您的实际场景中,您在单击元素时调用 Activity。如果你想执行更多不同的操作,你必须调用 Broadcast 而不是 Activity:
// calling Intent on your widget
Intent i = new Intent(context, WidgetActivity.class);
i.setAction("your.intent.filter.action.name"); // assign intent action
int flag = PendingIntent.FLAG_UPDATE_CURRENT;
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, flag);
view1.setOnClickPendingIntent(R.id.repClear, pi);
然后你需要在你的小部件中实现onReceive()
方法:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals("your.intent.filter.action.name")) {
// do your stuff
}
}
与其他 PendingIntents 类似。
如何更新小部件的示例(您几乎可以在任何地方显式调用它):
public static void updateWidget(Context c, boolean hide) {
AppWidgetManager am = AppWidgetManager.getInstance(c);
ComponentName thisWidget = new ComponentName(c, WidgetActivity.class);
int[] allWidgetIds = am.getAppWidgetIds(thisWidget);
for (int widgetId: allWidgetIds) {
RemoteViews remoteViews = new RemoteViews(c.getPackageName(), layout);
if (!hide) {
remoteViews.setViewVisibility(viewId, View.VISIBLE);
}
else {
remoteViews.setViewVisibility(viewId, View.INVISIBLE); // OR GONE
}
// finally calling request for update of widget
am.updateAppWidget(widgetId, remoteViews);
}
}
调用:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals("your.intent.filter.action.name")) {
updateWidget(context, false);
}
if (intent.getAction().equals("your.another.intent.filter.action.name")) {
updateWidget(context, true);
}
}
关于android - 如何在 AppWidgetProvider 类中使用 OnClickListener 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19722930/
我是一名优秀的程序员,十分优秀!