0
I am stuck to a problem, I have to receive values in three radiogroups to make the calculation of more 3 edittext along with the result of a method, the method works perfectly but the final calculation of all the items summed is not printed in edittext, wanted to know what I’m doing wrong not to pass the calculation correctly... Follows the code:
package com.example.edfre.bleedingcalc;
import android.icu.text.NumberFormat;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.appindexing.Thing;
import com.google.android.gms.common.api.GoogleApiClient;
import android.content.Intent;
import android.widget.TextView;
import java.io.Serializable;
@RequiresApi(api = Build.VERSION_CODES.N)
public class BleedingMain extends AppCompatActivity {
private RadioGroup rgGender;
private RadioButton rbMale;
private RadioButton rbFemale;
private RadioGroup rgSmoker;
private RadioButton SYes;
private RadioButton SNo;
private RadioGroup rgLevel;
private RadioButton rbL1;
private RadioButton rbL2;
private RadioButton rbL3;
private EditText etWeight;
private EditText etHeight;
private EditText etIMC;
private EditText etHTC;
private Button btCalculate;
private EditText etResult;
private double weight;
private double height;
private double imc;
private double gender;
private double smoker;
private double level;
private double htc;
private double finalResult;
private GoogleApiClient client;
private EditText resultcalc;
private double varResult;
static final int CalculateBleed = 1;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client2;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client3;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client4;
public BleedingMain() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bleeding_main);
rgGender = (RadioGroup) findViewById(R.id.rgGender);
rgGender.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
if (checkedId == R.id.rbMale) {
gender = 143.951;
} else {
gender = 0;
}
}
});
rgSmoker = (RadioGroup) findViewById(R.id.rgSmoker);
rgSmoker.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
if (checkedId == R.id.rbsYes) {
smoker = 274.718;
} else {
smoker = 0;
}
}
});
etHeight = (EditText) findViewById(R.id.etHeight);
etWeight = (EditText) findViewById(R.id.etWeight);
etIMC = (EditText) findViewById(R.id.etIMC);
etHTC = (EditText) findViewById(R.id.etHTC);
etResult = (EditText) findViewById(R.id.etResult);
etWeight.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
//declarar variáveis
String weightString = etWeight.getText().toString();
// convert the String into a double
if (weightString.length() > 0) {
weight = Double.parseDouble(weightString);
}
// read the height out of weightEdit
String wString = etWeight.getText().toString();
if (wString.length() > 0) {
weight = Double.parseDouble(weightString);
}
// declarar o cálculo imc
double IMC = calcIMC();
etIMC.setText(Double.toString(IMC));
}
});
etHeight.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
//aqui você realiza os calculos que precisa e atribui o resultado
// ao local desejado
String heightString = etHeight.getText().toString();
// convert the String into a double
if (heightString.length() > 0) {
height = Double.parseDouble(heightString);
}
// read the height out of heightEdit
String hString = etHeight.getText().toString();
if (hString.length() > 0) {
height = Double.parseDouble(heightString);
}
double imc = calcIMC();
etIMC.setText(Double.toString(imc));
}
});
String htcString = etHTC.getText().toString();
// convert the String into a double
if (htcString.length() > 0) {
htc = Double.parseDouble(htcString);
}
rgLevel = (RadioGroup) findViewById(R.id.rgLevels);
rgLevel.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
if (checkedId == R.id.rbL1) {
level = 0;
} else if (checkedId == R.id.rbL2) {
level = 401.089;
} else {
level = 848.182;
}
}
});
Hemat = Htc();
varResult = calcBleed();
etResult.setText(Double.toString(varResult));
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client4 = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
public void bleedingCalc(View v) {
Bundle enviarResultado = new Bundle();
enviarResultado.putString("Resultado", String.valueOf(etResult));
Intent intent = new Intent(BleedingMain.this, Calculator.class);
intent.putExtras(enviarResultado);
startActivityForResult(intent, CalculateBleed);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CalculateBleed) {
if (resultCode == RESULT_OK) {
resultcalc.setText(Double.toString(R.id.etResult));
TextView t1 = (TextView) findViewById(R.id.etResult);
t1.setText(data.getStringExtra(String.valueOf(etResult)));
}
}
}
double calcIMC() {
return (weight) / (height * height);
}
double Htc() {
return (htc * 20.505);
}
double Hemat;
double calcBleed() {
return (level) + (smoker) + (gender) + (imc * 17.975) + (Hemat);
}
Have you tried debugging over setText() methods to see if some value is passed?
– Carlos Bridi
And how to do that???
– Eduardo Frederick
Select the Toogle Breakpoint option on the line, activate the debug mode and check on the app run. If you have questions, do a quick search on youtube or another website.
– Carlos Bridi
Blz, I’m gonna try...
– Eduardo Frederick
I did the debugging and setText() is passing null value...so there is something wrong with the passage of values...but I do not know what would be, the calculation seems to be right...
– Eduardo Frederick
I solved the issue, is passing result, but the result is not matching the values that should be passed...
– Eduardo Frederick