Переопределение изменения пользовательских настроек Android

Мой пользовательский класс предпочтений помогает выбирать цвет.
Пользовательское предпочтение вызывает намерение GridView, которое включает 9 цветов.
Но мой пользовательский класс не может обновить цвет, выбранный пользователем в gridview

Когда я закончу намерение предпочтения, затем перезапустите предпочтение,
Цвет показывает меня, как я выбрал.

onBindView() Метод, я перестарался. Это идеально.
Но я не знаю, какой метод нужно переопределить, чтобы обновить цвет.

введите здесь описание изображения


public class ConfigImage extends Preference
{
    Context mContext;

    public ConfigImage(Context context, AttributeSet attrs)
    {
        this(context, attrs, 0);
        this.mContext = context;
    }

    public ConfigImage(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
        this.mContext = context;
        setLayoutResource(R.layout.preference_image);
    }

    @Override
    public void onBindView(View view)
    {
        super.onBindView(view);
        ImageView imageView = (ImageView) view.findViewById(R.id.preference_image_iv_color);
        if (imageView != null)
        {
            SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(mContext);
            int colorIndex = sharedPref.getInt("setting_color_default", 3);
            imageView.setBackgroundColor(Color.parseColor(ColorStorage.colors[colorIndex]));
        }
    }
}

.

    <PreferenceCategory
    android:key="setting_color_info"
    android:title="색상" >

    <com.pack.ConfigImage
        android:id="@+id/setting_color_default"
        android:key="setting_color_default"
        android:selectable="true"
        android:summary="Choose default color"
        android:title="Default Color"
        settings:background="#FFFFFFFF" />
</PreferenceCategory>

person JuHyun Lee    schedule 27.04.2012    source источник


Ответы (1)


Предполагая, что ваша проблема не получает уведомления об изменении общих предпочтений, вы должны подписаться на это изменение, например

registerOnSharedPreferenceChangeListener(this);
person n00b    schedule 01.04.2013