7

タブレット用のアンドロイドの設定のようなことをしようとしています。

[その他] をクリックすると、右側のフラグメントに [ワイヤレス & ネットワーク] 設定画面が表示されます。[VPN] をタッチすると、同じフラグメントで [VPN] 設定画面が開きます。

どうやってやるの ?

これは私の好みのxmlです

<PreferenceScreen android:title="Title A">
        <PreferenceScreen android:title="TITLE B">
            <PreferenceCategory
                android:title="category">
                <ListPreference android:key="list"
                    android:title="list" android:entries="@array/list_vals"
                    android:entryValues="@array/list_vals1"
                    android:defaultValue="1" android:dialogTitle="list title"
                    android:negativeButtonText="cancel" />
            </PreferenceCategory>
        </PreferenceScreen>
</PreferenceScreen>

問題は、タイトル B のネストされた設定画面を画面全体にロードしたくないということです。正しいフラグメントの場所にロードしたいだけです...

注:これまでのところ、このドキュメントを使用して例を作成しましたhttp://developer.android.com/guide/topics/ui/settings.html#PreferenceHeaders

ここに画像の説明を入力

ここに画像の説明を入力

編集*

これが私の活動です

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.preference_headers, target);
    }
}

レイアウトがありません。マスター フラグメント ID と詳細フラグメント ID を確認するにはどうすればよいですか?

4

1 に答える 1

14

簡単な例として、を定義しPreferenceActivity、メインカテゴリのヘッダーファイルを提供します。

クラスSettingsActivity

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onBuildHeaders(List<Header> target) {
        super.onBuildHeaders(target);
        loadHeadersFromResource(R.xml.headers,target);
    }
}

ファイル/res/xml/headers.xml

<?xml version="1.0" encoding="utf-8"?>

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
    <header android:title="Preference Header"
        android:fragment="com.example.SettingsDemo.PrefFragment"/>
</preference-headers>

PreferenceFragment上記で参照されているようにを作成しandroid:fragment、独自の設定ファイルを提供します。

クラスPrefFragment

public class PrefFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
    }
}

ファイル/res/xml/prefs.xml

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 <PreferenceCategory android:title="Preferences">
 <SwitchPreference android:title="Preference" />
    <PreferenceScreen android:title="Sub Preferences"
        android:fragment="com.example.SettingsDemo.SubPrefFragment"/>
 </PreferenceCategory>
</PreferenceScreen>

PreferenceFragment上記で参照されているように子を作成しandroid:fragment、独自の設定ファイルも提供します。

クラスSubPrefFragment

public class SubPrefFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.sub_prefs);
    }
}

ファイル/res/xml/sub_prefs.xml

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Sub Preferences">
        <CheckBoxPreference android:title="Sub Preference"/>
    </PreferenceCategory>
</PreferenceScreen>

それでおしまい。はPreferenceActivity、すべての子フラグメントを自動的に表示します。

結果:

メインPreferenceFragmentここに画像の説明を入力してください

PreferenceFragment同じヘッダーの下で 、subに置き換えられました:ここに画像の説明を入力してください

于 2013-02-05T13:00:02.277 に答える