gpt4 book ai didi

android - 如何在 AppWidgetProvider 类中使用 OnClickListener 方法

转载 作者:太空狗 更新时间:2023-10-29 14:18:00 25 4
gpt4 key购买 nike

我需要在单击小部件时执行更多操作,使用此代码,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);

}
}

Image1

Image2

我想在点击图像 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com