/ / Dlaczego nie zmienił się postęp? - Android, Android-view, Android-seekbar

Dlaczego postęp nie został wywołany? - Android, android-widok, android-seekbar

Rozszerzam SeekBar:

public class NutritionalSeekBar extends SeekBar implements SeekBar.OnSeekBarChangeListener {

public NutritionalSeekBar(Context context) {
super(context);
}

public NutritionalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}

public NutritionalSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public NutritionalSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = (Math.round(progress / 50)) * 50;
seekBar.setProgress(progress);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
}

Następnie użyj go w xml:

<com.package.views.NutritionalSeekBar
android:id="@+id/seek_bar_carbos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:progress="50" />

Dlaczego zmieniany postęp wywołania zwrotnego nigdy nie jest wywoływany?

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli chcesz NutritionalSeekBar instancja, aby być własną OnSeekBarChangeListener, musisz ustawić to jako takie. Powinieneś także połączyć swoich konstruktorów. Na przykład:

public class NutritionalSeekBar extends SeekBar implements SeekBar.OnSeekBarChangeListener {

public NutritionalSeekBar(Context context) {
this(context, null);
}

public NutritionalSeekBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public NutritionalSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

setOnSeekBarChangeListener(this);
}
...

}