1

でサポート ライブラリを使用するのが困難ですandroid.support.v7.widget.GridLayout。それは常に私に次のエラーを与えます:

    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 any 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):   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.widget.RemoteViews.apply(RemoteViews.java:939)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:218)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.os.Looper.loop(Looper.java:123)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.app.ActivityThread.main(ActivityThread.java:3683)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at java.lang.reflect.Method.invokeNative(Native Method)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at java.lang.reflect.Method.invoke(Method.java:507)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at 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):   at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.view.LayoutInflater.createView(LayoutInflater.java:471)
08-09 23:49:56.716: W/AppWidgetHostView(132):   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
08-09 23:49:56.716: W/AppWidgetHostView(132):   ... 15 more

上記の 33 行目は、support lib タグが始まる部分です。なんらかの理由でクラスが見つからなかったようですが、理由はわかりません...

このライブラリを使いたい理由は、Android v10 との互換性を維持したいからです。プロジェクトのビルド ターゲットとして v10 と v4.2.2 のどちらを選択してもかまいません。マニフェストminSdkVersionは 10 に設定されています。これらすべての手順に従い、.jar をアプリの参照ライブラリに入れてみて、エクスポートするオプションにチェックを入れました。

これは mylayout.xmlで、アプリ ウィジェットの作成に使用されています。

<?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>

更新:GridLayoutアプリ ウィジェットに関連するの使用法に絞り込むことができました。この問題は、GridLayoutそれらを使用した場合にのみ発生するようです。普通Activityに同じレイアウトを使用すると、正常に動作します。これを解決する方法について何か提案はありますか?

4

1 に答える 1

1

ウィジェットを作成する場合、メカニズムViewを実装するに制限されます。RemoteViewsそのメカニズムが機能する方法は、リモートの「ホスト」プロセスが実際の膨張を行うことです。したがって、そのリモート プロセス (ウィジェットをホストするランチャー) のGridLayoutクラスパスにクラスがない場合、独自のプロセスで View を描画してBitmaponとして設定する以外に、これを行う方法はまったくありませんImageView。しかし、私はそれをしません。

一般に、ウィジェットを作成するときは、フレームワークに付属する に制限してくださいViews

于 2013-08-10T14:19:38.493 に答える