我最近開始用 Java 開發小部件,但在使用和管理多個小部件時,我并不完全確定一般概念。我正在使用 AppWidgetProvider 來更新小部件 UI 并注冊點擊監聽器。我希望 onUpdate() 方法具有所有 appWidgetIds 或需要更新的小部件的 appWidgetIds。但是截至目前,我將始終獲得最近最少創建的小部件的 ID,無論單擊哪個小部件。有一次我收到了到目前為止已創建的所有 widgetId,但在我放置另一個 widgetId 后發生了變化。代碼 getIntArrayExtra(); 似乎也存在同樣的問題;最后,我想要多個小部件來顯示單個數據,并且當我單擊其中一個時,它們會自行更新或同時更新。我還沒有找到一種方法將單個數據綁定到單個小部件并獲取小部件本身(因為它在放置另一個小部件后不會顯示在 ID 中)。如果您能在下面的代碼中添加一些解釋性背景信息或指出一些問題,將非常有幫助,謝謝!公共類幻燈片擴展 AppWidgetProvider {@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Intent intent = new Intent(context, UpdateSlideshowService.class); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); context.startService(intent);}公共類 UpdateSlideshowService 擴展服務 {@Overridepublic void onStart(Intent intent, int startId) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext()); int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); for (int widgetId : allWidgetIds) { int number = (new Random().nextInt(100)); Intent clickIntent = new Intent(this.getApplicationContext(), Slideshow.class); clickIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds); PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT); RemoteViews remoteViews = new RemoteViews(this.getApplicationContext().getPackageName(), R.layout.slideshow); remoteViews.setTextViewText(R.id.update, "Random: " + number); remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent); appWidgetManager.updateAppWidget(widgetId, remoteViews); } stopSelf(); super.onStart(intent, startId);}
添加回答
舉報
0/150
提交
取消