Fragment
縦モードではなく横モードで (ビュー付きで) 表示する必要がある UI があります。縦向きモードでも使用できるはずですが、ListPopupWindow
代わりに を使用して結果が表示されます。
<fragment />
フラグメントが開始されていない場合 (ポートレートの場合)、プログラムでフラグメントを作成しながら、ランドスケープ レイアウトのタグを使用することでこれを処理できると考えました。
横向きで開始する限り、これは正常に機能します。フラグメントがプログラムで作成される縦向きで開始すると、フラグメントをレイアウトにアタッチしようとするときにエミュレーターを回転させると、アプリケーションがクラッシュします。
java.lang.IllegalStateException: Fragment はビューを作成しませんでした。android.app.Activity.onCreateView(Activity.java:4095) で
のドキュメントはFragment.isInLayout()
、この方法で処理できるはずであることを示唆しているようです:
タグを介してアクティビティ ビュー階層の一部としてレイアウトが含まれている場合は true を返します。これは、古いフラグメントが以前の状態から復元され、現在の状態のレイアウトに表示されない場合を除いて、タグを使用してフラグメントが作成された場合に常に当てはまります。
問題は、これを正しく行う方法、または何か不足している場合です。
アップデート:
isInLayout()
現在も正常に動作していないようです。Fragment
手動でコンテナーに を追加した場合は false を返します。
また、コンテナーに手動で を追加してFragment
から、そのレイアウトを含まないレイアウトに (デバイスを) ローテーションすると、クラッシュします。
原因: java.lang.IllegalArgumentException: No view found for id 0x7f060011 for fragment SearchFragment{4042f868 #2 id=0x7f060011 SearchFragment} at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:722)