gpt4 book ai didi

android - AppWidget中的ImageButton更新源

转载 作者:行者123 更新时间:2023-11-29 02:10:41 25 4
gpt4 key购买 nike

我正在尝试根据 RemoteViews 复制 ToggleButton 的功能,因此我可以在我的 App Widget 中继续使用。我有一个 ImageButton,它可以检测点击,但我无法更改它在点击时显示的图像。我的印象是我需要在单击小部件以显示更改后强制更新小部件。知道最好的方法是什么吗?

public class WifiWidget extends AppWidgetProvider {

boolean toggleState = false;
public static String ACTION_WIDGET_RECEIVER = "com.nickavv.cleanwidgets.WIFICLICK";
Context myContext;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]) {
final int N = appWidgetIds.length;
myContext = context;
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.wifi_toggle_layout);
Intent intent = new Intent(ACTION_WIDGET_RECEIVER);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.wifiToggleButton, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}

@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
switchToggle();
}
}

void switchToggle() {
RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.wifi_toggle_layout);
Log.d("toggleState",""+toggleState);
if(toggleState == false) {
views.setImageViewResource(R.id.wifiToggleButton, R.drawable.wifi_toggle_on);
} else {
views.setImageViewResource(R.id.wifiToggleButton, R.drawable.wifi_toggle_off);
}
toggleState = !toggleState;
Log.d("toggleState",""+toggleState);
}

编辑:将此添加到 switchToggle 的底部:

AppWidgetManager myAWM = AppWidgetManager.getInstance(myContext);
ComponentName cn = new ComponentName(myContext, WifiWidget.class);
onUpdate(myContext, myAWM, myAWM.getAppWidgetIds(cn));

最佳答案

是的,您必须更新小部件。从这里可以看出,您可以直接调用 onUpdate() 并读取其中的按钮状态以相应地更新您的 RemoteViews。只需使用 RemoteViews.setImageViewResource() 设置与当前按钮状态对应的图像。

调用 onUpdate() 所需的只是参数,您可以通过 Context 获取这些参数:

getAppWidgetIds()ComponentName 作为参数。您可以像下面这样创建一个:

ComponentName cn = new ComponentName(context, WifiWidget.class);

您还可以使用整个构造从任何给定点更新您的应用程序小部件,您不受 onUpdate() 的约束。只需在构建您的 RemoteViews 后使用附加的 AppWidgetManager.updateAppWidget() 调用来发布它们(显示您的 UI 更改)。

关于android - AppWidget中的ImageButton更新源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589117/

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