ウィジェットをホストするアプリを書いています。アプリにはカスタム ビューがあります (これがおそらく問題の原因です)。このように AppWidgetHostView を取得します
private AppWidgetHostView widget;
...
AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
widget = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
widget.setAppWidget(appWidgetId, appWidgetInfo);
mView.addWidget(widget, appWidgetInfo);
mView.addWidget() は基本的にこの AppWidgetHostView インスタンスを記憶するだけで、mView はそれをキャンバスに直接描画します。視覚的にはすべて問題ありません。実際のウィジェットを見ることができます。しかし、問題は UI イベントに反応することです。onClick() などのウィジェットでハンドラーを正しくトリガーするために、親ビューで何をする必要があるか教えてください。
ノート:
通常はクリック イベントに反応する標準のウィジェットを使用しました。どれも機能しませんでした。
また、リスナーを使用して独自のテスト ウィジェットを作成し (views.setOnClickPendingIntent(R.id.appwidget_text, pending); を介して)、ウィジェットがホームスクリーンに追加された場合に onClick() が正常にトリガーされますが、アプリでは機能しません。
mView はクリック イベントを正しく検出し、そこで widget.performClick() を呼び出そうとしましたが、onClickListener がウィジェットに登録されていないことを意味する false を返します。しかし、ソースによると mAppWidgetHost.createView() は updateAppWidget を呼び出し、その onClick リスナーを登録します。
どこを見ればいいのか教えてください。ありがとう