0
我想弄清楚如何將複合按鈕或QuickContactBadge(QCB)置於狀態欄通知。我使用遠程視圖來傳遞我的自定義佈局,它適用於ImageView,textViews等,但當我嘗試添加複合按鈕(例如開關)或嘗試使用快速聯繫徽章或我的自定義視圖時,會出現異常。 這是XML的樣子Android:如何使用自定義視圖,包括QuickContactBadge或CompoundButton用於Android中的狀態欄通知
<QuickContactBadge
android:id="@+id/badge"
android:layout_width="@dimen/avatar_small_size"
android:layout_height="@dimen/avatar_small_size"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_generic_user_square_small"/>
這就是我正在嘗試發佈通知
Intent notificationIntent;
PendingIntent contentIntent;
Notification.Builder builder = new Notification.Builder(this);
builder.setAutoCancel(false);
builder.setSmallIcon(R.drawable.icon);
builder.setTicker("Notification Alert");
// This is where actual notification is constructed
notificationIntent = new Intent (this, MyActivity.class);
contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
builder.setContentIntent(contentIntent);
contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
builder.setContent(contentView);
mNotificationManager.notify(notification_alert_id, builder.getNotification());
這是個例外,我得到當我嘗試運行此
02-14 20:07:40.014 E/TabletStatusBar(1212): couldn't inflate view for notification
02-14 20:07:40.014 E/TabletStatusBar(1212): android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.QuickContactBadge
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.createView(LayoutInflater.java:606)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.parseInclude(LayoutInflater.java:823)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.rInflate(LayoutInflater.java:729)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.widget.RemoteViews.apply(RemoteViews.java:1570)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.systemui.statusbar.tablet.TabletStatusBar.inflateViews(TabletStatusBar.java:1779)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.systemui.statusbar.tablet.TabletStatusBar.addNotificationViews(TabletStatusBar.java:1587)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.systemui.statusbar.tablet.TabletStatusBar.addNotification(TabletStatusBar.java:790)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:231)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.os.Looper.loop(Looper.java:137)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.app.ActivityThread.main(ActivityThread.java:4340)
02-14 20:07:40.014 E/TabletStatusBar(1212): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 20:07:40.014 E/TabletStatusBar(1212): at java.lang.reflect.Method.invoke(Method.java:511)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-14 20:07:40.014 E/TabletStatusBar(1212): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-14 20:07:40.014 E/TabletStatusBar(1212): at dalvik.system.NativeStart.main(Native Method)
02-14 20:07:40.014 E/TabletStatusBar(1212): Caused by: android.view.InflateException: Binary XML file line #7: Class not allowed to be inflated android.widget.QuickContactBadge
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.failNotAllowed(LayoutInflater.java:618)
02-14 20:07:40.014 E/TabletStatusBar(1212): at android.view.LayoutInflater.createView(LayoutInflater.java:558)
02-14 20:07:40.014 E/TabletStatusBar(1212): ... 21 more
使用遠程視圖時,有什麼方法可以使QCB或我的自定義視圖處於通知狀態?將感謝任何幫助。
感謝 ABHI
感謝您的回覆。有沒有其他方式發送自定義通知,而不使用遠程視圖?或者是否有其他方式可以使用這些小部件進行通知? – Abhi 2012-02-15 06:57:28
@Abhi:不,不。 – CommonsWare 2012-02-15 13:11:28
感謝您的回覆。 – Abhi 2012-02-20 17:42:21