2013-05-07 2 views
0

Я имею немного головоломки ..Android Java с помощью переключателя/футляр для расчета различных процентов

Я переменная называется «результаты», которая является результатом ранее вычисленным переменным, а затем добавляется либо + 10%, + 20%, 0% (то же самое, что и ..) -10% и т. Д., В зависимости от того, какой переключатель выбран пользователем, проблема в том, что данные вычисляются только тогда, когда пользователь нажимает кнопку. Пока моя кнопка работает нормально:

public void onClick(View v) { 
     switch (v.getId()) { 

     case R.id.btnCalcCalories: 
      double weight = Integer.parseInt(etWeight.getText().toString()); 
      double bodyfat = Integer.parseInt(etBodyfat.getText().toString()); 
      ; 
      lbm = weight * (100 - bodyfat)/100; 
      bmr = 370 + (21.6 * lbm); 
      maintCals = bmr * actLevel; 

      maintCalories.setText("Calories need to maintain current bodyweight: " + String.valueOf(maintCals)); 
      lbmResult.setText("Your Lean Body Mass is " + String.valueOf(lbm) 
        + "Kg"); 
      bmrResult.setText("Your Base Metabolic rate is " 
        + String.valueOf(bmr) + " calories"); 
      calorieResult.setText("Your Daily calorie goal is " + String.valueOf(calResult) + " calories"); 

Хотя мне нужно получить кастрированный баран пользователей желают терять/усиление/поддержание веса с помощью RadioGroup так:

public void onCheckedChanged(RadioGroup group, int checkedId) { 
     switch (checkedId) { 
     case R.id.radLW: 
      setGPercentage = 10 * maintCals/100; 
      calResult = maintCals - setGPercentage; 
      break; 
     case R.id.radLWF: 
      setGPercentage = 20 * maintCals/100; 
      calResult = maintCals - setGPercentage; 
      break; 
     case R.id.radM: 
      setGPercentage = 0; 
      break; 
     case R.id.radGW: 
      setGPercentage = 10 * maintCals/100; 
      calResult = maintCals + setGPercentage; 
      break; 
     case R.id.radGWF: 
      setGPercentage = 20 * maintCals/100; 
      calResult = maintCals + setGPercentage; 
      break; 
     } 

Чтобы уточнить, мне нужно " calResult ', который будет рассчитан в зависимости от того, что выбрал пользователь, очевидно, это может быть проблемой, если переменные вычисляются только во время метода onClick:/

+6

Итак ... чем вопрос? –

+0

@TonythePony +1 Для фотографии пони в вашем профиле. – Maroun

+0

Этот 'selGPercentage = setGPercentage;' не делает ничего полезного – codeMagic

ответ

1

окончательный RadioGroup:

public void onCheckedChanged(RadioGroup group, int checkedId) { 
     switch (checkedId) { 
     case R.id.radLW: 
      setGPercentage = 10 * maintCals/100; 
      finalGPercentage = maintCals - setGPercentage; 
      break; 
     case R.id.radLWF: 
      setGPercentage = 20 * maintCals/100; 
      finalGPercentage = maintCals - setGPercentage; 
      break; 
     case R.id.radM: 
      setGPercentage = 0; 
      break; 
     case R.id.radGW: 
      setGPercentage = 10 * maintCals/100; 
      finalGPercentage = maintCals + setGPercentage; 
      break; 
     case R.id.radGWF: 
      setGPercentage = 20 * maintCals/100; 
      finalGPercentage = maintCals + setGPercentage; 
      break; 
     } 

и OnClick:

case R.id.btnCalcCalories: 
      double weight = Integer.parseInt(etWeight.getText().toString()); 
      double bodyfat = Integer.parseInt(etBodyfat.getText().toString()); 
      ; 
      lbm = weight * (100 - bodyfat)/100; 
      bmr = 370 + (21.6 * lbm); 
      maintCals = bmr * actLevel; 

      maintCalories.setText("Calories need to maintain current bodyweight: " + String.valueOf(maintCals)); 

      lbmResult.setText("Your Lean Body Mass is " + String.valueOf(lbm) 
        + "Kg"); 
      bmrResult.setText("Your Base Metabolic rate is " 
        + String.valueOf(bmr) + " calories"); 
      calorieResult.setText("Your Daily calorie goal is " + String.valueOf(finalGPercentage) + " calories"); 
      break; 

мне просто нужно еще одну переменную для хранения расчет: D

0

Ваш вопрос не совсем ясен, но я думаю, что вам нужно сделать создается какая-то инициализация для вашей деятельности, поэтому ваш calResult имеет рассчитанное (по умолчанию) значение до того, как пользователь сделает выбор.

Посмотрите документацию для Activity class, чтобы лучше понять жизненный цикл Activty и связанные с инициализацией методы, такие как onCreate.

Смежные вопросы