Drawer Layout 機能を利用する Android アプリを作成しています。アプリ全体で使用できるナビゲーション ツールとして Drawer Layout を使用できるようにしたいと考えています。Drawer Layout を使用するために、アクティビティ レイアウト xml ファイルで以下を使用しています。
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<LinearLayout
android:id="@+id/main_content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/navigational_drawer"
android:layout_width="220dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#FFFFFF"/>
</android.support.v4.widget.DrawerLayout>
ただし、PreferenceActivity の周りに DrawerLayout をラップするのは非常に困難です。PreferenceActivity は、アプリで Android 設定のルック アンド フィールを維持するのに役立つため、保持したい特別な種類のアクティビティです。つまり、addPreferencesFromResource() 呼び出しを使用して設定をロードし、addContentView() 呼び出しを使用して XML ファイルをロードしません。通常、設定リソースには、DrawerLayout にラップされたくない PreferenceScreen タグが含まれています。
誰かがその問題に対処しなければなりませんでしたが、どのように解決しましたか? Android アプリに PreferenceActivity があり、同じアクティビティで DrawerLayout を使用できる場合は、その方法を共有してください。どんな助けでも大歓迎です。
編集済み:私が変更した場合
<!-- The main content view -->
<LinearLayout
android:id="@+id/main_content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
に
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
その後、PreferenceActivity がロードされてもアプリはクラッシュしません (ID の「リスト」が Preference アクティビティが期待しているものと一致するため)。ただし、ドロワーは表示されません。ListView の「リスト」の下にあるものはすべて無視されているようです。