亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 updateAppWidget 方法對所有操作都沒有反應?

為什么我的 updateAppWidget 方法對所有操作都沒有反應?

RISEBY 2023-03-17 16:12:37
誰能告訴我我的廣播接收器有什么問題,因為它對時間的變化沒有反應?它確實調用了 updateAppWidget 方法,因為我正在顯示 Toast 消息,但時鐘小部件不更新時間。我已經嘗試了來自 stackoverflow 的無數解決方案,包括為 TIME_TICK、TIME_CHANGED、TIME_ZONE_CHANGED 添加意圖過濾器操作,但到目前為止我沒有運氣。我知道我真的接近一個合適的解決方案,但我需要有人指出正確的方向。我的 BroadcastReceiver 類代碼:package com.vulterey.nixieclockwidget;import android.appwidget.AppWidgetManager;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;public class Synchronize_Time extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();        Bundle extras = intent.getExtras();        if (extras != null) {            int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);            if (appWidgetId != -1) {                if ((action.equals(Intent.ACTION_TIME_TICK)) ||                        (action.equals(Intent.ACTION_TIME_CHANGED)) ||                        (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) ||                        (action.equals(Intent.ACTION_POWER_CONNECTED))) {                    NixieClock.updateAppWidget(context, AppWidgetManager.getInstance(context), appWidgetId);                }            }        }    }}當小部件啟動時,時間設置正確,顯然 updateAppWidget 方法啟動,但我通過更改充電/不充電狀態從 BroadcastReceiver 類調用它我收到 Toast 消息但保持不變,而邏輯上它應該更新為 updateAppWidget 函數是從 BroadcastReceiver 正確調用。我可以從比我聰明的人那里得到一些建議嗎?
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

似乎我試圖以錯誤的方式調用小部件的所有實例。在我的 AppWidgetProvider 類中將代碼添加到 onUpdate 方法之后:


ComponentName thisWidget = new ComponentName(context,

            NixieClock.class);

    int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

并在 BroadcastReceiver 類代碼中更改為:


        Bundle extras = intent.getExtras();

    if (extras != null) {

        int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);

        if (appWidgetId != -1)

到:


        ComponentName thisWidget = new ComponentName(context,

            NixieClock.class);

    int[] allWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(thisWidget);

    for (int appWidgetId : allWidgetIds)

一切都像夢一樣工作;)


查看完整回答
反對 回復 2023-03-17
  • 1 回答
  • 0 關注
  • 281 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號