gpt4 book ai didi

Android AppWidget 不更新

转载 作者:行者123 更新时间:2023-11-29 16:03:51 26 4
gpt4 key购买 nike

我一直致力于实现一个可以手动更新的 AppWidget。但是,出于某种原因,Widget 除了第一次显示时不会更新,并且该更新是通过 Configuration Activity 进行的,它与代码几乎相同onReceive 位于 AppWidgetProvider 类中。

我所做的总结是,当需要更新时,我发送一个在 Manifest 的 WidgetProvider 中注册的广播,在 onReceive 中接收到它后,我提取值并更新小部件,但是,小部件没有得到更新。我尝试直接在 onReceive 中更新它,尝试手动调用 onUpdate,并尝试在提供者之外更新小部件,但没有成功。下面是代码的简化版本,我很确定我遗漏了一些简单的东西,欢迎提出任何建议,如果您需要任何进一步的信息,请告诉我,在此先感谢。

请注意,小部件显示正常,显示初始布局,并且 onReceive 方法正确接收广播,因为日志显示在 LogCat,但是它没有得到更新,我尝试了我发现的所有解决方案但没有运气,谢谢。

onReceive 方法:

//onReceive
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals("com.example.android.myproject.REQUEST_WIDGET_UPDATE"))
{
//ComponentName, RemoteViews and AppWidgetManager
ComponentName provider = new ComponentName(context.getApplicationContext(), ReceiverAppWidgetProvider.class);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
AppWidgetManager manager = AppWidgetManager.getInstance(context.getApplicationContext());

//Change the TextView value
String timeLeft = intent.getStringExtra("timeLeft");
views.setTextViewText(R.id.txtv_time_remaining, timeLeft);

//Update the widget
manager.updateAppWidget(provider, views);

//Test calling onUpdate
//onUpdate(context, manager, manager.getAppWidgetIds(provider));

//Log the values for the objects for debugging
MyLog.log(timeLeft);
MyLog.log(intent.getAction());
MyLog.log(provider.toString());
MyLog.log(views.toString());
MyLog.log(manager.toString());
}
else
{
super.onReceive(context, intent);
}
}

在 list 中广播:

<!-- App Widget Provider -->
<receiver
android:name="com.example.android.myproject.widgets.ReceiverAppWidgetProvider"
android:label="@string/widget_title"
android:icon="@drawable/background_splash_screen">

<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.example.android.myproject.REQUEST_WIDGET_UPDATE"/>
</intent-filter>

<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/app_widget_info"/>
</receiver>

小部件 XML 配置:

<appwidget-provider 
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="40dp"
android:minWidth="250dp"
android:updatePeriodMillis="0"
android:resizeMode="none"
android:initialLayout="@layout/widget_layout"
android:configure="com.example.android.myproject.AppWidgetConfigureActivity">

</appwidget-provider>

最佳答案

发现问题了,重启设备就可以了,代码本身没有问题。如果您使用的是模拟器,也可能会出现此问题,因此重新启动它也可以解决问题。

How can I update the UI for an android appwidget

报告的问题: https://code.google.com/p/android/issues/detail?id=8889

关于Android AppWidget 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357921/

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