46

から通知領域にカスタムビューを使用して通知を投稿しようとしています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はどういうわけか問題を与えています。

誰かが私が間違っているのは何ですか?

4

16 に答える 16

16

私にとっての問題は、カスタム通知ビュー xml ファイルで、ルート レイアウトの特定の高さを設定していたことです。

私が変更するとすぐに:

android:layout_height="@dimen/notification_expanded"

android:layout_height="match_parent"

通知ビューのルート レイアウトで、問題が解決されました。

また、この例を見て、通知にカスタム レイアウトを使用する簡単な例を確認してください。

于 2015-06-02T21:22:10.797 に答える
12

理由は不明ですが、カスタム リモート ビューのルート ビューでディメンションを参照することはできません。そのため、ハードコーディングする必要がありますandroid:layout_height="64dp"が、使用android:layout_height="@dimen/notification_height_that_64"するとBad notification posted - Couldn't expand RemoteViews for: StatusBarNotification. これが役立つことを願っています:)

于 2016-12-28T13:47:51.500 に答える
11

View私の場合、カスタム通知レイアウトの通常の例外が原因でした。基本的には、TextView や ImageView などの特定のウィジェットしか使用できないためです。

于 2016-10-31T11:48:18.937 に答える
7

私にとって問題はView、カスタム通知用に設定されたカスタム レイアウトのアイテムを持つことでした。レイアウトからアイテムを削除するViewと、Bad Notification Posted の問題が解決されました。

を使用してカスタム通知を作成する場合に使用できるレイアウト アイテムのリストを次に示しますRemoteView

プロジェクトのクリーニングもlayout_heightasの設定もmatch_parent私にとってはうまくいきませんでした。

于 2016-10-11T13:44:08.220 に答える
-2

通常、このエラーは contentView がエラーであることを意味します。確認してください。contentView を、TextView のみを含むレイアウトに置き換えたほうがよいかもしれません。OK、実行してください。

于 2015-06-09T10:01:42.373 に答える