2013-05-27 336 views
1

我想在每次触摸它时在我的应用程序中从seekbar中获取值。我在seekbar中声明的值将被添加到我的url中,但每次触摸seekbar时,它都会给我一个循环,并且url将循环并加载为progressChanged上的金额查找栏。这是我的代码:Seekbar无法正常工作

int period = 0; 
SeekTime.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, 
     boolean fromUser) { 
     // TODO Auto-generated method stub 
     if (SeekTime.getProgress() <= 3){ 
      SeekTime.setProgress(0); 
      period=7; 
     } 
     if (SeekTime.getProgress() > 3 && SeekTime.getProgress() <= 8) { 
      SeekTime.setProgress(5); 
      period =30; 
     } 
     if (SeekTime.getProgress() >8 && SeekTime.getProgress()<=13){ 
      SeekTime.setProgress(10); 
      period = 90; 
     } 
     if (SeekTime.getProgress() >13 && SeekTime.getProgress()<=18){ 
      SeekTime.setProgress(15); 
      period = 180; 
     } 
     if (SeekTime.getProgress() >18 && SeekTime.getProgress()<=23){ 
      SeekTime.setProgress(20); 
      period = 270; 
     } 
     if (SeekTime.getProgress() >23){ 
      SeekTime.setProgress(25); 
      period = 360; 
     } 
     new LoadData(URL+period).execute(); 

回答

1

我觉得你得到的问题,是因为当你调用SeekTime.setProgress()的进展情况正在改变 - 它()再次调用onProgressChange。

你应该做的是检查,如果进度更改已由用户完成。你有来自用户变量,允许你控制它。

int period = 0; 
SeekTime.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, 
    boolean fromUser) { 
    // TODO Auto-generated method stub 
if(fromUser) { 
    if (SeekTime.getProgress() <= 3){ 
     SeekTime.setProgress(0); 
     period=7; 
    } 
    if (SeekTime.getProgress() > 3 && SeekTime.getProgress() <= 8) { 
     SeekTime.setProgress(5); 
     period =30; 
    } 
    if (SeekTime.getProgress() >8 && SeekTime.getProgress()<=13){ 
     SeekTime.setProgress(10); 
     period = 90; 
    } 
    if (SeekTime.getProgress() >13 && SeekTime.getProgress()<=18){ 
     SeekTime.setProgress(15); 
     period = 180; 
    } 
    if (SeekTime.getProgress() >18 && SeekTime.getProgress()<=23){ 
     SeekTime.setProgress(20); 
     period = 270; 
    } 
    if (SeekTime.getProgress() >23){ 
     SeekTime.setProgress(25); 
     period = 360; 
    } 
    new LoadData(URL+period).execute(); 
} 
} 
+0

boolean fromUser是来自seekbar的执行方法的值 –

+0

我不明白,你能解释一下吗? – Marek

+0

“你有来自用户变量,允许你控制它。” fromUser是我从seekbar实现方法时得到的默认变量。 所以我的代码和你在答案中写的代码没有区别 –