2

當我在自定義Notification中使用ConstraintLayout時,我得到InflationException。我可以在我的應用程序的其他地方使用它們,而不是在Notification的自定義佈局中。我假定支持庫中包含的任何小部件根本不能用於RemoteView,但我無法在其中找到任何確認。有人知道嗎?在通知中使用ConstraintLayout時發生崩潰

E/StatusBar: couldn't inflate view for notification com.example.app/0x1 
android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout 
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout 
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.constraint.ConstraintLayout" on path: DexPathList[[],nativeLibraryDirectories=[/system/priv-app/TeleService/lib/arm64, /system/fake-libs64, /system/priv-app/TeleService/TeleService.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64, /system/lib64, /vendor/lib64]] 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:606) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.widget.RemoteViews.inflateView(RemoteViews.java:3278) 
    at android.widget.RemoteViews.-wrap1(Unknown Source:0) 
    at android.widget.RemoteViews$AsyncApplyTask.doInBackground(RemoteViews.java:3380) 
    at android.widget.RemoteViews$AsyncApplyTask.doInBackground(RemoteViews.java:3376) 
    at android.os.AsyncTask$2.call(AsyncTask.java:333) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
    at java.lang.Thread.run(Thread.java:764) 
E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.app, PID: 9732 
android.app.RemoteServiceException: Bad notification posted from package com.example.app: Couldn't inflate contentViewsandroid.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1775) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

回答

8

甲RemoteViews對象(以及,因此,一個App的widget)可以支持以下佈局類

FrameLayout 
LinearLayout 
RelativeLayout 
GridLayout 

和以下widget類:

AnalogClock 
Button 
Chronometer 
ImageButton 
ImageView 
ProgressBar 
TextView 
ViewFlipper 
ListView 
GridView 
StackView 
AdapterViewFlipper 

後代這些類不支持。

瞭解更多: https://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

+0

這是令人失望的。如果我們可以使用一些支持庫視圖,那將是非常好的... –

0

RemoteView只能支持以下佈局類:

FrameLayout

LinearLayout

RelativeLayout

GridLayout

如前所述here