All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mapzen.prefsplus.EditFloatPreference Maven / Gradle / Ivy

package com.mapzen.prefsplus;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;

import static android.text.InputType.TYPE_CLASS_NUMBER;
import static android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;

/**
 * {@link android.preference.DialogPreference} that saves float values to
 * {@link android.content.SharedPreferences}.
 */
public class EditFloatPreference extends AbstractFloatPreference {
    public static final String TAG = EditFloatPreference.class.getSimpleName();

    public EditFloatPreference(Context context) {
        super(context);
        getEditText().setRawInputType(TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL);
    }

    public EditFloatPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        getEditText().setRawInputType(TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL);
    }

    public EditFloatPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        getEditText().setRawInputType(TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL);
    }

    @Override
    protected String getPersistedString(String defaultReturnValue) {
        if(getSharedPreferences().contains(getKey())) {
            float floatValue = getPersistedFloat(0f);
            return String.valueOf(floatValue);
        } else {
            return defaultReturnValue;
        }
    }

    @Override
    protected boolean persistString(String value) {
        float floatValue;
        try {
            floatValue = Float.valueOf(value);
        } catch (NumberFormatException e) {
            Log.e(TAG, "Unable to parse preference value: " + value);
            setSummary("Invalid value");
            return false;
        }

        setSummary(Float.toString(floatValue));
        return persistFloat(floatValue);
    }

    @Override
    protected Object onGetDefaultValue(TypedArray a, int index) {
        return Float.valueOf(a.getString(index)).toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy