Android 如何为RangeSekbar使用方法onProgressChanged?

Android 如何为RangeSekbar使用方法onProgressChanged?,android,range,seekbar,Android,Range,Seekbar,我已经成功地将RangeSeekbar从这个网站()实现到我的应用程序中 现在很多人都有这样一个问题,那就是我们在RangeSeekbar的代码中找不到一个onProgressChanged方法 我必须自己写一篇关于你的文章吗 我将RangeSeekbar实现为一个DialogFragment。对于正常的Seekbar,一切正常 RangeSekbar是一个泛型类。如果将T参数作为范围值的类型传递给它,则RangSeekBar将左thumb值传递为minValue,将右thumb值传递为maxV

我已经成功地将RangeSeekbar从这个网站()实现到我的应用程序中

现在很多人都有这样一个问题,那就是我们在RangeSeekbar的代码中找不到一个onProgressChanged方法

我必须自己写一篇关于你的文章吗

我将RangeSeekbar实现为一个DialogFragment。对于正常的Seekbar,一切正常


RangeSekbar是一个泛型类。如果将T参数作为范围值的类型传递给它,则RangSeekBar将左thumb值传递为minValue,将右thumb值传递为maxValue OnRangeSeeekBar.OnRangeSekBarChangeListener。(RangeSekBar栏,T最小值,T最大值)

类的更改行扩展到:

public class LookingAgeFragment extends DialogFragment implements OnRangeSeekBarChangeListener<Integer>
公共类LookingAgeFragment扩展了DialogFragment在RangeSeekbarchaneListener上的实现
之后,您应该在代码的这一行将Object更改为Integer

    seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
            viewMinAge.setText(String.valueOf(minValue));
            viewMaxAge.setText(String.valueOf(minValue));
        }
    });
seekBar.setonRangeSekbarchaneListener(新的RangeSekbar.onRangeSekbarchaneListener(){
@凌驾
RangeSeekbarValuesChanged上的公共无效(RangeSekbar条、整数minValue、整数maxValue){
viewMinAge.setText(String.valueOf(minValue));
viewMaxAge.setText(String.valueOf(minValue));
}
});
我认为通过这种改变,你的问题会得到解决。 如果你的年龄范围不是连续的,也可能是离散的,我建议你使用这个解决方案

public class LookingAgeFragment extends DialogFragment implements RangeSeekBar.OnRangeSeekBarChangeListener<Integer> {

RangeSeekBar<Integer> seekBar;
int[] ageValues={10, 20, 30, 50, 100};


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    // create RangeSeekBar as Integer range between 20 and 75
    seekBar = new RangeSeekBar<Integer>(0, ageValues.length - 1, getActivity());
    seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
            viewMinAge.setText(String.valueOf(ageValues[minValue]));
            viewMaxAge.setText(String.valueOf(ageValues[minValue]));
        }
    });
}
公共类LookingAgeFragment扩展DialogFragment实现RangeSeekBar.OnRangeSeekBarChangeListener{
范围搜索杆搜索杆;
int[]年龄值={10,20,30,50,100};
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
//将RangeSekbar创建为介于20和75之间的整数范围
seekBar=新范围seekBar(0,ageValues.length-1,getActivity());
seekBar.setonRangeSekbarchaneListener(新的RangeSekbar.onRangeSekbarchaneListener(){
@凌驾
RangeSeekbarValuesChanged上的公共无效(RangeSekbar条、整数minValue、整数maxValue){
viewMinAge.setText(String.valueOf(ageValues[minValue]);
viewMaxAge.setText(String.valueOf(ageValues[minValue]);
}
});
}

}RangeSekbar是一个泛型类。如果将T参数作为范围值的类型传递给它,则RangSeekBar将左thumb值传递为minValue,将右thumb值传递为maxValue OnRangeSeeekBar.OnRangeSekBarChangeListener。(RangeSekBar栏,T最小值,T最大值)

类的更改行扩展到:

public class LookingAgeFragment extends DialogFragment implements OnRangeSeekBarChangeListener<Integer>
公共类LookingAgeFragment扩展了DialogFragment在RangeSeekbarchaneListener上的实现
之后,您应该在代码的这一行将Object更改为Integer

    seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
            viewMinAge.setText(String.valueOf(minValue));
            viewMaxAge.setText(String.valueOf(minValue));
        }
    });
seekBar.setonRangeSekbarchaneListener(新的RangeSekbar.onRangeSekbarchaneListener(){
@凌驾
RangeSeekbarValuesChanged上的公共无效(RangeSekbar条、整数minValue、整数maxValue){
viewMinAge.setText(String.valueOf(minValue));
viewMaxAge.setText(String.valueOf(minValue));
}
});
我认为通过这种改变,你的问题会得到解决。 如果你的年龄范围不是连续的,也可能是离散的,我建议你使用这个解决方案

public class LookingAgeFragment extends DialogFragment implements RangeSeekBar.OnRangeSeekBarChangeListener<Integer> {

RangeSeekBar<Integer> seekBar;
int[] ageValues={10, 20, 30, 50, 100};


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    // create RangeSeekBar as Integer range between 20 and 75
    seekBar = new RangeSeekBar<Integer>(0, ageValues.length - 1, getActivity());
    seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
            viewMinAge.setText(String.valueOf(ageValues[minValue]));
            viewMaxAge.setText(String.valueOf(ageValues[minValue]));
        }
    });
}
公共类LookingAgeFragment扩展DialogFragment实现RangeSeekBar.OnRangeSeekBarChangeListener{
范围搜索杆搜索杆;
int[]age值={10、20、30、50、100};
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
//将RangeSekbar创建为介于20和75之间的整数范围
seekBar=新范围seekBar(0,ageValues.length-1,getActivity());
seekBar.setonRangeSekbarchaneListener(新的RangeSekbar.onRangeSekbarchaneListener(){
@凌驾
RangeSeekbarValuesChanged上的公共无效(RangeSekbar条、整数minValue、整数maxValue){
viewMinAge.setText(String.valueOf(ageValues[minValue]);
viewMaxAge.setText(String.valueOf(ageValues[minValue]);
}
});
}

}

在课堂上,如果你行动起来,你就会有这个

 if (notifyWhileDragging && listener != null) {
 listener.onRangeSeekBarValuesChanged(this,   getSelectedMinValue(), getSelectedMaxValue());
   }
如果需要,请删除此项

//if (notifyWhileDragging && listener != null) {
 listener.onRangeSeekBarValuesChanged(this,   getSelectedMinValue(), getSelectedMaxValue());
   //}

在ReangesekBar课堂上,如果你在行动,你就有这个

 if (notifyWhileDragging && listener != null) {
 listener.onRangeSeekBarValuesChanged(this,   getSelectedMinValue(), getSelectedMaxValue());
   }
如果需要,请删除此项

//if (notifyWhileDragging && listener != null) {
 listener.onRangeSeekBarValuesChanged(this,   getSelectedMinValue(), getSelectedMaxValue());
   //}

我使用下一个代码获取更改事件的值:

rangeSeekBar.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.d("MinValue", rangeSeekBar.getSelectedMinValue().toString());
                Log.d("MaxValue", rangeSeekBar.getSelectedMaxValue().toString());
                return false;
            }
        });

我使用下一个代码获取更改事件的值:

rangeSeekBar.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.d("MinValue", rangeSeekBar.getSelectedMinValue().toString());
                Log.d("MaxValue", rangeSeekBar.getSelectedMaxValue().toString());
                return false;
            }
        });

对不起,我不太明白。我必须在rangeSeekBar类中编辑方法吗?你能更具体地描述我的代码吗?当我将onRangeSekbarValuesChanged(RangeSekbar条、整数minValue、整数maxValue)更改为此时。eclipse对我大喊大叫:我需要添加未实现的方法。它不接受新版onRangeSeekbarValuesChangeddo。你有什么即时通讯工具吗?你为什么使用数组和日期?我希望seekbar返回一个简单的int值。代码在第57行崩溃了。原因是一个空点例外。也许你不明白我的问题。我希望两个文本视图显示拇指的当前位置。对不起,我不太明白。我必须在rangeSeekBar类中编辑方法吗?你能更具体地描述我的代码吗?当我将onRangeSekbarValuesChanged(RangeSekbar条、整数minValue、整数maxValue)更改为此时。eclipse对我大喊大叫:我需要添加未实现的方法。它不接受新版onRangeSeekbarValuesChangeddo。你有什么即时通讯工具吗?你为什么使用数组和日期?我希望seekbar返回一个简单的int值。代码在第57行崩溃了。原因是一个空点例外。也许你不明白我的问题。我希望两个文本视图显示拇指的当前位置。