繁体   English   中英

APP Widget Textview 未更新(Java,android 工作室)

[英]APP Widget Textview not updating (Java, android studio)

我正在尝试在应用小部件中更新 textview 但没有任何内容令人耳目一新

    @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    for(int appWidgetID : appWidgetIds){
        Intent intent = new Intent(context, MainActivity.class);

        PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,0);
        RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.timetable_widget);
        views.setOnClickPendingIntent(R.id.btnPress,pendingIntent);
        views.setTextViewText(R.id.textView2, "HELLO__WORLD");
        appWidgetManager.updateAppWidget(appWidgetID,views);


    }
}

你真的收到更新广播了吗? 小部件的更新时间被强制为至少 30 分钟,如下所示:

<appwidget-provider
    ...
    android:updatePeriodMillis="xxx" // if set a millis less than 30mins, it will not work
    ...
/>

或者将updatePeriodMillisupdate设置为 0 并通过发送自定义广播来更新小部件:

  1. 注册您的操作的意图过滤器
  2. 在小部件的onReceive中接收您的操作并更新文本

为了防止任何 ANR 超时,我们在服务中执行更新。

fun updateWidget(context: Context) {
    val appWidgetManager = AppWidgetManager.getInstance(context)
    val widgetComponentName = ComponentName(context.packageName, YourWidget::class.java.name)
    val appWidgetIds: IntArray = appWidgetManager.getAppWidgetIds(widgetComponentName)
    RemoteViews(context.packageName, R.layout.your_widget).apply {
        setTextViewText(R.id.text, "new text")
        appWidgetManager.updateAppWidget(appWidgetIds, this)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM