2014-03-05 9 views
8

Ich versuche programmgesteuert ein ListPreference zu erstellen, was ich tun kann, aber wenn ich es auswähle, ist die Liste der Einträge leer. Ich glaube, ich setze die setEntries() und setEntryValues() mit CharSequence Arrays richtig, aber es ist nur leer, wenn ich es auswähle.Programmgesteuertes Erstellen von ListPreference - aber Eintragsliste ist leer

Hier finden Sie die ActivitySetting Klasse. Bitte beachten Sie, dass ich PreferenceFragments verwende, um veraltete Methoden nicht zu verwenden. Aber ich habe nur einen PreferenceFragment, die derzeit als Standard

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

    // Display the fragment as the main content. 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit(); 
} 

public static class PrefsFragment extends PreferenceFragment 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.settings); 

     // Create the new ListPref 
     ListPreference customListPref = new ListPreference(getActivity()); 

     // Get the Preference Category which we want to add the ListPreference to 
     PreferenceCategory targetCategory = (PreferenceCategory) findPreference("TARGET_CATEGORY"); 

     CharSequence[] entries = new CharSequence[]{"One", "Two", "Three"}; 
     CharSequence[] entryValues = new CharSequence[]{ "1", "2", "3" }; 

     // IMPORTANT - This is where set entries...looks OK to me 
     customListPref.setEntries(entries); 
     customListPref.setEntryValues(entryValues); 

     customListPref.setTitle("Title"); 
     customListPref.setSummary("This is the summary"); 
     customListPref.setDialogMessage("Dialog Message"); 
     customListPref.setPersistent(true); 

     // Add the ListPref to the Pref category 
     targetCategory.addPreference(customListPref); 
    } 
} 
} 

Hier gesetzt wird, ist der setting.xml es hat nur die einzigen PreferenceCategory, die die ListPreference hinzugefügt:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <PreferenceCategory android:title="Some Options" android:key="TARGET_CATEGORY"> 
    </PreferenceCategory> 
</PreferenceScreen> 

Hier ist, was ich bekomme . Die ListPreference wurde erfolgreich, aber wenn ich es wählen .... Keine Einträge :(Ich erwarte die Optionen: „One“, „Two“, „Three“

enter image description here

+0

Dank war ich ein bisschen eine Zeit, um die Antwort der Umsetzung von http://stackoverflow.com/a/5375442/1815624 'this' funktionierte nicht' neuer ListPrefer ence (this) 'obwohl' getActivity' funktionierte 'new ListPreference (getActivity())' – CrandellWS

Antwort

6

es gefunden, wenn Sie festgelegt die setDialogMessage() dann überschreibt diese den Inhalt so durch diese Leitung zu entfernen, es funktioniert jetzt.

1

Sie könnten setDialogMessage() von setDialogTitle() zu bekommen den Titel zurück ersetzen möchten.

Verwandte Themen