IntentService
から通知領域にカスタムビューで通知を投稿しようとしていますが、_Couldn't expand RemoteView
_エラーが発生します。
onCreate()
で私がやっていることは次のとおりです。
_mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
icon = R.drawable.icon;
tickerText = "data upload in progress";
contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notiflayout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, "Hello");
contentView.setProgressBar(R.id.progressBar, 100, 10, false);
whatNext = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), starterActivity.class), 0);
notification = new Notification(icon, tickerText, System.currentTimeMillis());
notification.contentView = contentView;
notification.contentIntent = whatNext;
_
notify()
からonHandleIntent()
を呼び出して、onDestroy()
の通知をキャンセルしています。
このコードは、IntentService
を持たない独立したアプリで動作することを確認しました。 IntentService
でこれを行うと、何らかの問題が発生します。
誰かが私が間違っていることは何ですか?
ありがとう!
私にとっての問題は、カスタム通知ビューxmlファイルでルートレイアウトに特定の高さを設定していたことです。
変更したらすぐに:
Android:layout_height = "@ dimen/notification_expanded"
に
Android:layout_height = "match_parent"
通知ビューのルートレイアウトで、問題は解決されました。
この例 を見て、通知にカスタムレイアウトを使用する簡単な例を確認してください。
理由は不明ですが、カスタムリモートビューのルートビューでディメンションを参照することはできません。 Android:layout_height="64dp"
のようにハードコーディングする必要がありますが、Android:layout_height="@dimen/notification_height_that_64"
を使用した場合はBad notification posted - Couldn't expand RemoteViews for: StatusBarNotification
が得られます。これが役立つことを願っています:)
私の場合、例外はカスタム通知レイアウトの通常のView
が原因でした。基本的には、TextView、ImageViewなどの特定のウィジェットのみを使用できるためです。
私にとって問題は、カスタム通知のカスタムレイアウトセットにView
アイテムがあることでした。レイアウトからView
アイテムを削除することで、Bad Notification Postedの問題を解決しました。
RemoteView
を使用してカスタム通知を作成する場合は、 レイアウトアイテムのリスト を使用できます。
プロジェクトのクリーニングもlayout_height
のmatch_parent
としての設定も機能しませんでした。
私の場合、.setSmallIcon();
に提供するアイコンのサイズを小さくすることで、このエラーを修正できました。
同じエラーが発生しましたが、問題は制約レイアウトでした。問題を解決するために、Relative Layout
に変更しました。
同じ問題がありました。私の場合:
理由->私はbuilder.setAction(R.drawable.icon、...)関数にvectordrawableを使用し、サポートlibからそれらを有効にしようとしましたが、何も機能しませんでした。最近のAndroidシステムではアクションアイコンが表示されませんが、他ではこのエラーが発生します。
解決策->何も見つかりませんでした、唯一の回避策は、ドロアブルの.xmlファイルを避け、すべてのディレクトリhdpi mdpi ldpi。で.pngファイルを使用することです.
@Nikolaiの答えは私にとって助けになりました、確かに問題でした。同じ問題がありました。通知で使用できる特定のコントロールがあります。以下のように、通知用にレイアウトにビューがありました。
<View
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="0.04"/>
これがクラッシュの原因でした。次のレイアウトとコントロールがサポートされています:
このように 公式ドキュメント 。
私はそれを取り除いて、それはうまく働きました。それが誰かを助けることを願っています。
私はこのトピックに関連するトラブルがたくさんあると思います、私の場合、この問題は
Android:background="?attr/selectableItemBackground"
私はImageButton
でそれを使用し、アプリがクラッシュするたびにそれを削除しましたが、すべてが大丈夫でした、問題は、カスタムのView
タイプまたはテーマ属性あなたの意見、私はこれがこの問題で立ち往生している別の助けになることを願っています
私の場合、問題は呼び出し間の不整合でした
setShowActionsInCompactView(0)
そしてその .addAction
呼び出し...アクションの数が異なっていたため、エラー
ベクターのドロアブルを使用するときは注意してください。 Lollipop以前のデバイスでは、setSmallIcon
などのNotificationCompat.Builder
メソッドを使用してアイコンを設定すると、このクラッシュが発生します。カスタムビューでベクタードロウアブルを使用すると、同じクラッシュが発生します。