1

設定フラグメントを表示するだけの非常に単純なアクティビティがあります。

public class PreferencesActivity extends Activity {

Fragment frag = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    if (frag == null) {
        // If not, instantiate and add it to the activity
        frag = new PrefsFragment();
        ft.add(android.R.id.content, frag, frag.getClass().getName());
    } else {
        // If it exists, simply attach it in order to show it
        ft.attach(frag);
    }
    ft.commit();
}

private static class PrefsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

}
}

永続性をtrueに設定したpreferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:enabled="true"
    android:persistent="true"
    android:title="@string/settings" >
    <EditTextPreference
        android:dialogTitle="@string/dialog_ip"
        android:negativeButtonText="@android:string/cancel"
        android:persistent="true"
        android:positiveButtonText="@android:string/ok"
        android:title="@string/ip" />
</PreferenceScreen>

EditTextPreference を開いた場合は、何かを書き、ダイアログを閉じて、もう一度開きます。値はまだそこにあります。しかし、それだけです... 戻るボタンをクリックして、設定画面でもう一度入力すると、書かれたものはすでに失われています。アプリケーションを終了しても保存されません。

ここで何か不足していますか?

で実行: Android 4.0.3 Asus TF300

4

1 に答える 1

4

あなたには価値EditTextPreferenceがありませんkey。例えば:

       <EditTextPreference
            android:key="edittext_preference"
            android:title="@string/title_edittext_preference"
            android:summary="@string/summary_edittext_preference"
            android:dialogTitle="@string/dialog_title_edittext_preference" />
于 2012-06-28T15:13:51.333 に答える