ウィジェットの問題のカップルがありますし、それらのすべてへの回答(そのように任意のコードを投稿しませんでしたが、私の文のいくつかは仮定に基づいている)があります。
「問題ローディングウィジェット」これは、ウィジェットが初期化され、レイアウトが更新される前にAndroidが使用するデフォルトのビューです。ウィジェットは、あなたはおそらく、ウィジェットのonReceive方法で問題を持っている間違ったレイアウトを示している場合
android:initialLayout="@layout/my_cool_widget_loading_message"
:単にあなたのウィジェットXML設定に次の行を追加します(ロードメッセージの代わりに、問題のメッセージを表示します)。 onReceiveは、ブロードキャストがその特定のウィジェット用であるかどうかにかかわらず、すべてのウィジェットに対して呼び出されます。 AndroidのAppWidgetProviderはappwidget Idによってブロードキャストをフィルタリングし、他のメソッド(onUpdateなど)にディスパッチします。
参照:https://developer.android.com/reference/android/appwidget/AppWidgetProvider.html#onReceive(android.content.Context、android.content.Intent)。
onReceiveをオーバーライドする場合は、super.onReceive(Context、Intent)をコールして、ほかのメソッドが他のウィジェット用のコールを受け取らないようにする必要があります。
ウィジェットの設定が完了しました。あなたがGoogleのドキュメントに従うならば、それはすべてうまく動作します。私が行う唯一の改善は、あなたが参照している私の他の答えが示唆していることです(https://stackoverflow.com/a/14991479/534471)。これは2つの放送を送信しません。 setResult()/ finish()部分はconfigアクティビティを終了するだけで、結果がRESULT_CANCELEDかRESULT_OKかによってAndroidに実際にウィジェットを追加するかどうかを知らせます。あなたのコードは動作しませんコードは次のとおりです。すべての
Intent intent = new Intent();
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {mAppWidgetId});
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, intent);
sendBroadcast(intent);
finish();
まずAppWidgetManager.EXTRA_APPWIDGET_IDSバージョンを使用して、あなたが良いなら、二回appWidgetIdを追加する必要はありません第二に、あなたが同じテントを使用していますあなたがそのインテントでアクションを設定したときに何が起こるのかは文書化されていませんが、Androidウィジェットでの私の経験は、あなたがドキュメントに正確に固執する必要があるか、 (あなたが遭遇するもののような)奇妙な問題を持つことになります。だから2つの異なるインテントを使用してください。 活動の結果:
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
放送:
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, this, MyWidget.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {mAppWidgetId});
sendBroadcast(intent);
ドキュメントが存在し、何の矛盾音ではありません。もしあなたがそれに正確に従えば、すべてが良いでしょう。私自身の答えを見てください。 –