Hallo
Ich entwickle gerade eine App die mir fürs Mountainbiken die Route mitloggt, Höhenmeter berechnet etc.
Ich habe mir einen PreferenceScreen Klasse erstellt, damit die Preferencen angezeigt werden. Die Preferenzen
werden im Code dazugefügt, damit ich nur an einer zentralen Stelle Einstellungen hinzufügen muss.
Sieht so aus (im settings.xml ist eine leerer PreferenceScreen enthalten)
public class PrefActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefFragment()).commit();
}
public static class PrefFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
P.AddPreferences(getPreferenceScreen());
}
}
}
Alles anzeigen
Das P.AddPreferences ruft unter anderem folgene Methoden auf:
private static void AddCategory(PVal val)
{
if(mPrefScr == null) {
return;
}
mCurrCat = new PreferenceCategory(mContext);
mCurrCat.setTitle(val.sTitle);
mPrefScr.addPreference(mCurrCat);
}
private static void AddLong(PVal val)
{
if(mCurrCat == null) {
return;
}
EditTextPreference newpref = new EditTextPreference(mContext);
newpref.setKey(val.sKey);
newpref.setTitle(val.sTitle);
newpref.setDefaultValue(String.valueOf(val.lDefault));
newpref.setSummary(val.sSummary);
newpref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
mCurrCat.addPreference(newpref);
}
Alles anzeigen
Es funktionierte prinzipiell, also der Screen wird angezeigt, und auch die Kategorien mit den EditTextPreferences werden richtig angezeigt. Das Problem ist aber nun, wenn ich auf eine Preference klicke passiert nichts. Es sollte ja ein EditTextfeld aufgehen wo ich den Wert ändern kann, es passiert aber nix. Das Komische ist, wenn ich die Activity schliesse, sehe ich ganz kurz im Hintergrund genau das Editfeld das angezeigt hätte werden sollen, aber nur für ein paar zehntel Sekunden.
Das Problem ist also, dass das Editfeld im Hintergrund angezeigt wird.
Hoffe ihr könnt mir helfen...
danke
mfg
Erich