0

プログラムでレイアウトインフレータを使用しました。Android 4 ではすべて問題ありませんが、Android 2.2 で使用すると、プログラムは実行時エラー (強制終了) で終了します。

問題はどこだ?

コードの一部:

Log.i("Hossein", "1");
    
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    Log.i("Hossein", "2");
    
    View itemView = inflater.inflate(R.layout.drawer_list_item, parent,
            false);

    Log.i("Hossein", "3");

レイアウト コード:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="?attr/dropdownListPreferredItemHeight"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical|left"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            style="?attr/spinnerDropDownItemStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:singleLine="true" />

        <TextView
            android:id="@+id/subtitle"
            style="?attr/spinnerDropDownItemStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="?attr/textAppearanceSmall" />
    </LinearLayout>

</LinearLayout>

Logcat メッセージ:

09-30 11:26:32.934: 私/ホセイン (416): 1

09-30 11:26:32.934: 私/ホセイン (416): 2

09-30 11:26:32.974: D/AndroidRuntime(416): VM をシャットダウンしています

09-30 11:26:32.974: W/dalvikvm(416): threadid=1: キャッチされない例外で終了するスレッド (グループ = 0x4001d800)

09-30 11:26:33.034: E/AndroidRuntime(416): 致命的な例外: メイン

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.InflateException: バイナリ XML ファイル行 #1: クラスの膨張エラー

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.LayoutInflater.createView(LayoutInflater.java:513) で

09-30 11:26:33.034: E/AndroidRuntime(416): com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.LayoutInflater.inflate(LayoutInflater.java:385) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.LayoutInflater.inflate(LayoutInflater.java:320) で

09-30 11:26:33.034: E/AndroidRuntime(416): com.androidbegin.sidemenututorial.MenuListAdapter.getView(MenuListAdapter.java:56) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.AbsListView.obtainView(AbsListView.java:1315) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.ListView.makeAndAddView(ListView.java:1727) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.ListView.fillDown(ListView.java:652) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.ListView.fillFromTop(ListView.java:709)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.ListView.layoutChildren(ListView.java:1580)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.AbsListView.onLayout(AbsListView.java:1147) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:702) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.FrameLayout.onLayout(FrameLayout.java:333) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.LinearLayout.onLayout(LinearLayout.java:1042) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.FrameLayout.onLayout(FrameLayout.java:333) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.FrameLayout.onLayout(FrameLayout.java:333) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.layout(View.java:7035)

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.ViewRoot.performTraversals(ViewRoot.java:1045) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.ViewRoot.handleMessage(ViewRoot.java:1727) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.os.Handler.dispatchMessage(Handler.java:99) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.os.Looper.loop(Looper.java:123)

09-30 11:26:33.034: E/AndroidRuntime(416): android.app.ActivityThread.main(ActivityThread.java:4627) で

09-30 11:26:33.034: E/AndroidRuntime(416): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で

09-30 11:26:33.034: E/AndroidRuntime(416): java.lang.reflect.Method.invoke(Method.java:521) で

09-30 11:26:33.034: E/AndroidRuntime(416): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) で

09-30 11:26:33.034: E/AndroidRuntime (416): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) で

09-30 11:26:33.034: E/AndroidRuntime(416): dalvik.system.NativeStart.main(ネイティブ メソッド) で

09-30 11:26:33.034: E/AndroidRuntime(416): 原因: java.lang.reflect.InvocationTargetException

09-30 11:26:33.034: E/AndroidRuntime(416): android.widget.LinearLayout.(LinearLayout.java:115) で

09-30 11:26:33.034: E/AndroidRuntime(416): java.lang.reflect.Constructor.constructNative(ネイティブメソッド)で

09-30 11:26:33.034: E/AndroidRuntime(416): java.lang.reflect.Constructor.newInstance(Constructor.java:446) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.LayoutInflater.createView(LayoutInflater.java:500) で

09-30 11:26:33.034: E/AndroidRuntime(416): ... 34 もっと見る

09-30 11:26:33.034: E/AndroidRuntime(416): 原因: android.content.res.Resources$NotFoundException: ドローアブル リソース ID #0x0 からのファイル res/drawable/list_selector_background.xml

09-30 11:26:33.034: E/AndroidRuntime(416): android.content.res.Resources.loadDrawable(Resources.java:1697)

09-30 11:26:33.034: E/AndroidRuntime(416): android.content.res.TypedArray.getDrawable(TypedArray.java:601) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.(View.java:1885) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.View.(View.java:1834) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.view.ViewGroup.(ViewGroup.java:285) で

09-30 11:26:33.034: E/AndroidRuntime(416): ... 38 もっと見る

09-30 11:26:33.034: E/AndroidRuntime(416): 原因: android.content.res.Resources$NotFoundException: ファイル res/drawable/list_selector_background.xml from xml タイプ ドローアブル リソース ID #0x0

09-30 11:26:33.034: E/AndroidRuntime(416): android.content.res.Resources.loadXmlResourceParser(Resources.java:1924) で

09-30 11:26:33.034: E/AndroidRuntime(416): android.content.res.Resources.loadDrawable(Resources.java:1692)

09-30 11:26:33.034: E/AndroidRuntime(416): ... 42 もっと見る

09-30 11:26:33.143: D/dalvikvm(416): GC_FOR_MALLOC は 3421 オブジェクト / 286952 バイトを 102 ミリ秒で解放しました

09-30 11:26:35.735: I/プロセス (416): 信号を送信しています。PID: 416 SIG: 9

4

2 に答える 2

0
// try this way
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              style="?android:spinnerDropDownItemStyle"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="horizontal" >

    <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true" />

    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical|left"
            android:orientation="vertical" >

        <TextView
                android:id="@+id/title"
                style="?android:spinnerDropDownItemStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true" />

        <TextView
                android:id="@+id/subtitle"
                style="?android:spinnerDropDownItemStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:textAppearance="?android:textAppearanceSmall" />
    </LinearLayout>

</LinearLayout>
于 2013-09-30T09:53:09.117 に答える
0

このactivatedBackgroundIndicator属性は、API レベル 11 (Android 3.0) で導入されました。

android:background="?android:attr/activatedBackgroundIndicator"ルート レイアウトの を、対象となるすべての API レベルで使用できるものに置き換えるか、代替リソースメカニズムを使用して、11 より前のレイアウトと他のレイアウトを切り替えます。

スタックトレースが言及していることに注意してくださいlist_selector_background.xml-これは、このスタックトレースを引き起こしている正確なコードですか?

于 2013-09-30T09:39:47.103 に答える