私は 2 つのアプリケーションを構築するために使用するライブラリ プロジェクトを持っています。1 つはパブリック アプリケーションで、もう 1 つは個人用のプライベート アプリケーションで、ほとんどの人にとって役に立たない設定がいくつかあります。このライブラリ プロジェクトでは、PreferenceActivity (API < Honeycomb の場合) といくつかの PreferenceFragments (API >= Honeycomb の場合) を、次のガイドを使用して設定ヘッダーで定義します: http://developer.android.com/guide/topics/ui/settings html#BackCompatHeaders
古いデバイスをサポートするために、ガイドに示されているようにこの XML ファイルを定義します。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:title="@string/base_de_donnees"
android:summary="@string/summary_pref_restaurer_bdd_sd">
<intent
android:targetPackage="com.me.app_lib"
android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_BDD" />
</Preference>
<Preference
android:title="@string/saisie"
android:summary="@string/summary_pref_saisie">
<intent
android:targetPackage="com.me.app_lib"
android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_SASISIE" />
</Preference>
</PreferenceScreen>
com.me.app_lib は、SettingsActivity が定義されているライブラリ プロジェクトのパッケージです。ただし、targetPackage が子プロジェクトのものと一致しないため、子プロジェクトの 1 つからインテントが呼び出されるとクラッシュします。com.me.app_lib を com.me.app_public (子プロジェクトの 1 つのパッケージ) に変更すると機能しますが、2 つの子プロジェクトがあるため、これはオプションではありません。
このファイルを各子プロジェクトにコピーして、targetPackage 行のみを変更する必要がありますか、それともより良いオプションがありますか?