2016-02-19 3 views
1

В настоящее время я использую пару прошивок в своем приложении. У меня 2 проблемы. У меня есть максимальные значения обоих этих указателей поиска, равные 10.Android java: Правильно работает прогресс поисковой системы.

Я буду использовать значение поисковых знаков, чтобы изменить 2 числа в моем коде.

Итак, у меня есть две переменные, имеющие диапазон. Один из них представляет собой белковый мод и может быть где угодно от 0,8 до 1,0, и жирный жир, который может находиться где угодно между 0,3 и 0,6. Я беру progressValue из SeekBar и преобразования этого значения в проценты, хранящихся в двойном, а затем делать уравнения

proteinmod = proteinmod = 0.8+(progressValue/10)*0.2; 
fatmod = 0.3+(progressValue/10)*0.3; 

моим вопроса: В seekbars является только пол-функциональным. Когда все пути влево, они являются минимальным значением диапазона, как ожидалось, - но оставайтесь на этом значении до тех пор, пока стрелка не будет полностью отключена, а затем белковый мотив и жир будут установлены там максимум. Я попытался установить текстовое изображение, равное значению прогресса, и протестировать его на разных позициях, и progressValue действительно работает правильно. Но по некоторым причинам эти значения мод не будут принимать значения где-либо еще между диапазоном, который я бы хотел. Вот мой код. Огромное спасибо заранее!

double proteinmod = 0; 
double fatmod = 0; 

    seekbar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      proteinmod = 0.8+(progressValue/10)*0.2; 
      tv6.setText(String.valueOf(proteinmod)); 
      updateOutput(); 
     } 

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

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

    seekbar3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      fatmod = 0.3+(progressValue/10)*0.3; 
      tv6.setText(String.valueOf(fatmod)); 
      updateOutput(); 
     } 

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

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

Я считаю, что это должно быть весь код, вам нужно, но если вам нужны другие биты, пожалуйста, не стесняйтесь спрашивать.

ответ

1

Попробуйте следующее:

proteinmod = 0.8+(progressValue/10d)*0.2; 

и

fatmod = 0.3+(progressValue/10d)*0.3; 

С progressValue и 10 оба являются Целые результат деления представляет собой целое число. Кастинг 10 до двойника должен решить проблему.

+0

О, черт возьми, большое спасибо! Исправлено так, как я хотел. Я всегда думал, что если вы сделали математику с целым числом и двойным, целое число будет использоваться в двойном эквиваленте. Спасибо, что поняли! –