В настройках моего приложения используется кастомный Preference - SeekBarPreference. Выглядит это так:

Проблема заключается в том, что после каждого клика по движку (значение необязательно изменять) Control1 и Control2 меняются местами:

Происходит это в эмуляторе 2.1. В эмуляторе с 4.2.2 такая проблема не проявляется. Вопрос: из-за чего такое может происходить и в чем разница в этом плане между 2.1 и 4.2.2?
Вот код Preference:
public class SeekBarPreference extends Preference implements OnSeekBarChangeListener {
private TextView valueTextView;
private int currentValue;
private int max;
private int min;
final private String NAMESPACE="http://schemas.android.com/apk/res/ru.bartwell.myapp";
private int defaultValue;
public SeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
Log.d("SeekBarPreference", "Init");
max = attrs.getAttributeIntValue(NAMESPACE, "max", 99);
min = attrs.getAttributeIntValue(NAMESPACE, "min", 0);
defaultValue = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android", "defaultValue", min);
if(defaultValue<min) defaultValue=min;
}
@Override
protected View onCreateView(ViewGroup parent) {
currentValue = getPersistedInt(defaultValue)-min;
RelativeLayout layout = (RelativeLayout) LayoutInflater.from(getContext()).inflate(R.layout.seek_bar_preference_layout, null);
((TextView) layout.findViewById(R.id.title)).setText(getTitle());
((TextView) layout.findViewById(R.id.summary)).setText(getSummary());
SeekBar bar = (SeekBar) layout.findViewById(R.id.seekBar);
bar.setMax(max-min);
bar.setProgress(currentValue);
bar.setOnSeekBarChangeListener(this);
valueTextView = (TextView) layout.findViewById(R.id.value);
valueTextView.setText(String.valueOf(currentValue+min));
return layout;
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
valueTextView.setText(String.valueOf(progress+min));
valueTextView.invalidate();
}
public void onStartTrackingTouch(SeekBar seekBar) {}
public void onStopTrackingTouch(SeekBar seekBar) {
currentValue = seekBar.getProgress();
persistInt(currentValue+min);
notifyChanged();
}
}
Используется так (prefs.xml):
<ru.bartwell.myapp.SeekBarPreference
android:key="Control1"
android:summary="@string/control1_description"
android:title="@string/control1"
android:defaultValue="12"
sbp:min="1"
sbp:max="20" />
<ru.bartwell.myapp.SeekBarPreference
android:key="Control2"
android:summary="@string/control2_description"
android:title="@string/control2"
android:defaultValue="3"
sbp:min="1"
sbp:max="15" />
PrefActivity.java:
public class PrefActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}