2013年1月16日編集:問題は解決しました!2日前に、アプリの更新バージョンをリリースし、を使用して、元々行っていたものを正しく識別しました。しかし、実際には、スローされた例外は誤解を招くものであり、それは実際の問題とは何の関係もありませんでした...ListViews
android:id="@android:id/list
ListFragment
本当の修正は、ショーンがビューを膨らませることについての提案を実装したときに来null
ました。ViewGroup
。新しいバージョンから同じ例外を受け取っていません。新しいバージョンは、この問題が解決されたと安全に言うのに十分なデバイスによってダウンロードされています。しかし、私はローレンスによるコメントと回答に本当に感謝しており、彼がフラグメントをどのようにインスタンス化しているかについて読み続けます。彼はビューインフレーターにヌルを渡すことを提案しましたが、実際にはショーンが最初にそうしました。彼の解決策で問題が解決したようであるため、それに応じて賞金が授与されます。ローレンスの優れた回答によって示唆されているように、フラグメントをインスタンス化するさまざまな方法についてさらに学習/読んだ場合は、将来このスレッドを更新します。残念ながら、バウンティを分割することはできません!
2013年1月14日編集:@LawrenceChoy のリクエストにより、ListView
関連XML
ファイルはhttp://pastebin.com/2xnG1VfFにあります。
2013年1月13日編集: アプリの更新バージョンをリリースし、 Bishanの提案のandroid:id="@+id/android:list
代わりに使用しましたが、そのアクティビティにがない場合でもandroid:id="@android:id/list"
、フラグメントアクティビティにないランダムな例外が発生します。LGE電話からの別の例外を追加しました。a ListView whose id attribute is 'android.R.id.list'
ListViews
2013年1月9日編集: Bishanが答えを提供しましたが、彼の解決策がこの例外を防ぐ理由についてもう少し説明を期待していました。さらに読んだ後、カスタムListView
を使用する場合は+記号を使用する必要があるためだと思います。ただし、特に両方が多くの異なるデバイスとエミュレーターで機能しているように見えることを考えると、私が正しいことを確認したり、説明を求めたりしたいと思います。この問題に関する信頼できる情報源/回答を探すために、約20分で賞金を調達します。ありがとう。
Playストアへの最近の更新されたリリースの後、実際にいくつかのデバイスから非常に奇妙な動作が発生しています。
私の新しいリリースでは、を使用していくつかのフラグメントを管理するFragmentActivity
(TabsStyledと呼ばれる)があります。FragmentStatePagerAdapter
私は合計4つのフラグメントを持っており、それらのフラグメントのうち2つは拡張されており、リストビューにはすべてライブラリからのとListFragment
が入力されています。他の2つのフラグメントには、がなく、拡張されていません。LoaderManager
CursorLoader
support.v4
ListViews
ListFragment
AVDだけでなく複数のデバイスで広範なテストを行いましたが、android.R.id.listが見つからないためにRuntimeExceptionsが発生することはありませんでした。
ただし、リリース時に、FragmentAcitivtyでいくつかのACRAクラッシュが発生しました"Your content must have a ListView whose id attribute is 'android.R.id.list'"
。TabsStyled.classは、FragmentActivity
ListFragmentsを管理するものであり、それ自体には`ListViews'はありません。これは私には非常に奇妙に思えます。この例外がスローされた場合、「親」のFragmentActivityではなく、ListFragmentsの1つに対するものであると思うからです。
これがスタックトレースの最上位です。ここにすべてを貼り付けるのではなく、要求に応じて追加のコードや情報を提供できます。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.hiddenforsecurity/com.myapp.hiddenforsecurity.TabsStyled}:
java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
ここでpastebinで利用可能な完全なスタックトレース:http://pastebin.com/aiV7pwXP。
ListFragments
ListViewsを含むそれぞれのXML (ListView
それぞれの個別のXMLに個別ListFragment
):
<ListView android:id="@android:id/list"
<!--the release currently uses "@+id/android:list)-->
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="45" />
ListFragments
ペーストビンにアップロードされた(診断を容易にするために少し簡略化された)1つ(他のListFragmentは非常に似ています):http: //pastebin.com/Nts3nVx1
そして、TabsStyledのわずかに簡略化されたフルバージョン(FragmentActivity
):http: //pastebin.com/ZS4Xg8kP
これまでに例外を作成したデバイス(および1/14の時点で、クラッシュを投稿し続けています):
MODEL BRAND ANDROID API
GT-I9305 Samsung 4.1.1 (using @android:id/list)
GT-S7562 Samsung 4.0.4 (using @android:id/list)
GalaxyNexus Samsung 4.2.1 (same exception seen with @+id/android:list)
L-01E LGE 4.0.4 (same exception seen with @+id/android:list)