我创建了一个名为 AndroidSeekBar
的 Java
函数,它接受一个 seekbar_id 、一个 textview_id 和一个类型。类型变量用于为不同的 SeekBars 调用更改 TextView
值,这是他的代码:
public AndroidSeekBar(SeekBar id1, TextView textid,int type){
/** Called when the activity is first created. */
PRICEbar = id1; // make seekbar object
SeekValue = textid;
int progress = PRICEbar.getProgress();
if(type==1)
progress = progress/5;
else if(type==2)
progress = progress*6;
PRICEbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
SeekValue.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
}
如何将 type 参数传递给 setOnSeekBarChangeListener
函数,以便为不同的 SeekBar 设置不同的字符串值。例如,在 40% 的进度下,如果 type = 1 那么它应该设置 40/5= 8 Meter
而在 type =2 上它应该设置 40 *6 = 240 公斤
。
最佳答案
How can I pass type parameter into setOnSeekBarChangeListener function in order to set different string values for different SeekBars
使用 SeekBar.setTag(value) 在 onProgressChanged
方法中访问 type
值:
PRICEbar.setTag(String.valueOf(type));
PRICEbar.setOnSeekBarChangeListener(new
SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
int type=Integer.parseInt(seekBar.getTag().toString());
}
...
}
关于java - Android:多次使用setOnSeekBarChangeListner方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938732/