support lib android.support.v7.widget.GridLayout causes InflateException / ClassNotFoundException with app widgets -
i'm having difficutlties use support library android.support.v7.widget.gridlayout
. gives me following error:
08-09 23:49:55.746: w/appwidgethostview(132): error inflating appwidget appwidgetproviderinfo(provider=componentinfo{com.myapp.appwidget}): android.view.inflateexception: binary xml file line #33: error inflating class android.support.v7.widget.gridlayout 08-09 23:49:56.716: w/appwidgethostview(132): updateappwidget couldn't find view, using error view 08-09 23:49:56.716: w/appwidgethostview(132): android.view.inflateexception: binary xml file line #33: error inflating class android.support.v7.widget.gridlayout 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:581) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.rinflate(layoutinflater.java:623) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.inflate(layoutinflater.java:408) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.inflate(layoutinflater.java:320) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.widget.remoteviews.apply(remoteviews.java:939) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.appwidget.appwidgethostview.updateappwidget(appwidgethostview.java:218) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.appwidget.appwidgethost.updateappwidgetview(appwidgethost.java:250) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.appwidget.appwidgethost$updatehandler.handlemessage(appwidgethost.java:73) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.os.handler.dispatchmessage(handler.java:99) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.os.looper.loop(looper.java:123) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.app.activitythread.main(activitythread.java:3683) 08-09 23:49:56.716: w/appwidgethostview(132): @ java.lang.reflect.method.invokenative(native method) 08-09 23:49:56.716: w/appwidgethostview(132): @ java.lang.reflect.method.invoke(method.java:507) 08-09 23:49:56.716: w/appwidgethostview(132): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:839) 08-09 23:49:56.716: w/appwidgethostview(132): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:597) 08-09 23:49:56.716: w/appwidgethostview(132): @ dalvik.system.nativestart.main(native method) 08-09 23:49:56.716: w/appwidgethostview(132): caused by: java.lang.classnotfoundexception: android.support.v7.widget.gridlayout in loader dalvik.system.pathclassloader[.] 08-09 23:49:56.716: w/appwidgethostview(132): @ dalvik.system.pathclassloader.findclass(pathclassloader.java:240) 08-09 23:49:56.716: w/appwidgethostview(132): @ java.lang.classloader.loadclass(classloader.java:551) 08-09 23:49:56.716: w/appwidgethostview(132): @ java.lang.classloader.loadclass(classloader.java:511) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.createview(layoutinflater.java:471) 08-09 23:49:56.716: w/appwidgethostview(132): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:570) 08-09 23:49:56.716: w/appwidgethostview(132): ... 15 more
the mentioned line #33 part support lib tag begins. looks class couldn't found reason, don't know why...
the reason why want use lib because want stay compatible android v10. no matter wether choose v10 or v4.2.2 project build target. manifest's minsdkversion
set 10. followed these steps , tried putting .jar app's refferenced libraries , ticked option export it.
this layout.xml
, being used create app-widget:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/appwidget_relativelayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:orientation="vertical"> <textview android:id="@+id/appwidget_textview_profilename" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:clickable="false" android:enabled="true" android:gravity="center_horizontal" android:longclickable="true" android:scrollhorizontally="false" android:text="profile name" android:textappearance="?android:attr/textappearancelarge" /> <framelayout android:id="@+id/appwidget_framelayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparentright="true" android:layout_below="@+id/appwidget_textview_profilename" > </framelayout> <android.support.v7.widget.gridlayout android:layout_width="wrap_content" android:layout_height="wrap_content" > </android.support.v7.widget.gridlayout> <textview android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="textview" /> </relativelayout>
update: managed narrow down usage of gridlayout
in connection app widgets. seems, problem occurs, when use gridlayout
on them. when use same layout ordinary activity
works fine. suggestions on how solve this?
when making widgets, constrained view
s implement remoteviews
mechanism. way mechanism works remote, "host" process 1 doing actual inflating. therefore, if remote process (the launcher hosts widget) not have gridlayout
class in classpath, there absolutely no way can short of drawing view in own process , setting bitmap
on imageview
. wouldn't that, though.
in general, when making widgets, constrain views
come framework.
Comments
Post a Comment