2

表示するカスタムレイアウトで通知を受け取るのに問題があります。次の(古い)コードを使用する場合:

notification = new Notification();
notification.icon = R.drawable.icon;
notification.tickerText = currentTickerText;
notification.when = System.currentTimeMillis();
notification.setLatestEventInfo(context, (CharSequence)currentTitle, (CharSequence)"", pendingIntent);

すべてが期待どおりに機能し、通知が表示されます。ただし、次の(新しい)コードを使用する場合:

contentView = new RemoteViews(context.getPackageName(), R.layout.service_notification);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.title, (CharSequence)currentTitle);
contentView.setTextViewText(R.id.text, (CharSequence)"");
contentView.setViewVisibility(R.id.pgStatus, View.GONE);

notification = new Notification();
notification.tickerText = currentTickerText;
notification.when = System.currentTimeMillis();

notification.contentView = contentView;
notification.contentIntent = pendingIntent;

通知は表示されません。エラーも出ていないので、どこで問題を探すのかよくわかりません。service_notificationレイアウトコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp" >
    <ImageView android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp" />
    <TextView android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        android:text="This is the title."
        style="@style/NotificationTitle" />
    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        android:layout_below="@id/title"
        android:text="This is the status"
        style="@style/NotificationText" />
    <ProgressBar
        android:id="@+id/pgStatus"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:layout_toRightOf="@+id/image" />
</RelativeLayout>

また、違いが生じる場合は、Android2.2エミュレーターでこれを実行しています。

何が間違っている可能性があるのか​​、または問題を追跡する方法について誰かが考えていますか?解決すべきエラーメッセージがないので、私はちょっと途方に暮れています。ありがとう!

4

1 に答える 1

11

ステータスバーの通知には、次のすべてが必要です。

  • ステータスバーのアイコン
  • カスタム通知レイアウトを定義しない限り、タイトルとメッセージ
  • 通知が選択されたときに発生するPendingIntent

ステータスバー通知から-通知の作成

アイコンを指定しないでください。これは、通知が無効であることを意味します。

(しかし、はい、フレームワーク側では、この場合に適切なエラーメッセージ/例外がないのは悪いことです)


編集:これをテストしたところ、Android2.2のコメントから「非表示」の通知を確認できます。2.3.3で動作しますが、その間に修正されたバグに遭遇したようです。

問題のある行は私にとって次のとおりです。

contentView.setViewVisibility(R.id.pgStatus, View.GONE);

コメントすると、すべてうまくいきます。XMLレイアウトのProgressBarに追加android:visibility="gone"した場合にも機能しますが、これは基本的に同じ効果があります。しかし、私がバーを呼ぶとすぐにsetViewVisibility()、すべてがバラバラになります。

したがって、バグトラッカーのコメントからの回避策をお勧めします。ProgressBarをLinearLayoutにラップし、代わりにその可視性を変更します。

于 2011-12-16T02:03:53.600 に答える