Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android preferences, customize EditTextPreference

I am setting up the PreferenceScreen for my Android application. I included a EditTextPreference to specify a remote server. Now I want to provide the user with an option to reset the address to the initial value inside the popup:

Basically what I want is a third button, "RESET" besides "CANCEL" and "OK"

enter image description here

I there any easy way to achieve this customization ?

Code for completness:

<PreferenceCategory android:title="General">

    <EditTextPreference
        android:defaultValue="http://stackoverflow.com/"
        android:dialogTitle="Specify the remote server: "
        android:inputType="textUri"
        android:key="serverAddress"
        android:maxLines="1"
        android:summary="somesSummaryText"
        android:title="Server Address"
        android:persistent="true" />

</PreferenceCategory>

like image 208
Martin Jäkel Avatar asked Dec 19 '25 05:12

Martin Jäkel


1 Answers

I think there is no way of doing so using the EditTextPreference but you can always have a simple Preference and add your AlertDialog in its OnClick with whatever customization you have in mind.

<Preference
    android:key="pref_key_edit"
    android:summary="@string/pref_summary_edit"
    android:title="@string/pref_title_edit"/>

and override onPreferenceTreeClick your PreferenceActivity or PreferenceFragment

@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    switch (preference.getKey()) {
        case "pref_key_edit":
            // Do whatever you want here
            return true;
    }
    return super.onPreferenceTreeClick(preferenceScreen, preference);
}
like image 141
Ahmed Hegazy Avatar answered Dec 20 '25 18:12

Ahmed Hegazy