0

私は非常に単純な問題で立ち往生しています: アプリで設定画面を作成しようとしていますが、新しい標準の PreferenceFragment メソッドを使用したいと考えています。

これは私の設定xmlです:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="@string/prefs_interface_settings">

    <SwitchPreference
        android:key="show_average"
        android:title="Show average length of work day"
        android:defaultValue="false"
        android:summary="Display the calculated average in the app title" />

    <EditTextPreference
        android:key="edittext_preference"
        android:title="@string/workday_duration_prefs_title"
        android:summary="summary_edittext_preference"
        android:defaultValue="8"
        android:dialogTitle="dialog_title_edittext_preference" />

    </PreferenceCategory>
</PreferenceScreen>

これは私の設定アクティビティです

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.widget.Toast;


public class SettingsActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }
}

そして-最後に-これは私のSettingsFragmentです:

import android.os.Bundle;
import android.preference.PreferenceFragment;


public class SettingsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            addPreferencesFromResource(R.xml.app_preferences); //Gets settings from XML
        }
    }

}

アプリケーションを実行すると、何らかの理由でフラグメントが初期化されていない、または表示されていないのと同じように、上記のアクティビティを開くと空のアクティビティが得られます。しかし、コードはとても単純です...私は自分が間違っていることを理解できません!

ご協力ありがとうございました

4

1 に答える 1

1

getArguments()は、作成時にのみ使用されます<preference-headers/><extra/>プリファレンス ヘッダー XML ファイルの要素で宣言された引数。宣言したら、次のコード内でこのコードを呼び出しますPreferenceFragment

String settings = getArguments().getString("settings");
if (settings.equals("myArgument")) {
    addPreferencesFromResource(R.xml.settings_wifi);
}

ただし、 を使用しないため<preference-headers/>、このコードを で呼び出すだけで済みますPreferenceFragment

addPreferencesFromResource(R.xml.app_preferences);
于 2015-03-23T12:12:09.580 に答える