Android自定义通知不显示

问题描述:

我无法通过自定义布局显示通知。如果我使用以下(旧)代码:Android自定义通知不显示

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> 

另外,我在Android 2.2模拟器中运行这个,如果有差别。

任何人有什么想法可能是错误的或我怎么可以去追踪这个问题?我有点不知所措,因为我没有错误信息可以解决。谢谢!

状态栏通知要求所有如下:

  • 状态栏
  • 标题和消息的图标,除非你定义一个自定义通知布局
  • 一个的PendingIntent ,当选择通知时被触发

from Status Bar Notifications - Creating Notifications

您没有指定图标,表示您的通知无效。

(但,是的,这是不好的框架方面,没有正确的错误消息/例外这种情况下)


编辑:通过刚刚测试这一点,我可以确认“隐形“的通知来自Android 2.2的评论。它在2.3.3上工作,看起来像你偶然发现的over a bug

有问题的线是我下面的:

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

如果我评论说出来,一切正常。当我将android:visibility="gone"添加到XML布局中的ProgressBar时,它也起作用,它具有基本相同的效果。但只要我在酒吧打电话setViewVisibility(),一切都会分崩离析。

所以我建议使用bugtracker注释的解决方法,将ProgressBar包装到LinearLayout中,然后改变它的可见性。

+0

嗯。那么这至少是问题的一部分。现在,股票代码通知会显示,但是当我拖下来查看当前通知时,它说没有...即使我的图标清晰地显示在左上角。思考? – 2011-12-16 11:31:50