I have a button and 2 values. When I'm in the emulator, everything works that is a thousand wonders .. When I export the app and install it on a mobile phone, the same button does not work.
package br.emanuel.imc;
import java.text.DecimalFormat;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.google.ads.*;
public class MainActivity extends Activity {
private AdView adView;
Button btCalcular;
EditText etPeso, etAltura, etIdade;
TextView tvResultado, tvCategoria, tvPesoIdeal;//< edit 08/06
double altura,peso,idade;
double resultado, pesoMin, pesoMax;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btCalcular = (Button) findViewById(R.id.btCalcular);
etPeso = (EditText) findViewById(R.id.etPeso);
etAltura = (EditText) findViewById(R.id.etAltura);
etIdade = (EditText) findViewById(R.id.etIdade);
tvResultado = (TextView) findViewById(R.id.tvResultado);
tvCategoria = (TextView) findViewById(R.id.tvCategoria);
tvPesoIdeal = (TextView) findViewById(R.id.tvPesoIdeal);
/*
adView = new AdView(this, AdSize.BANNER, "ca-app-pub-5576365539424575/7733482150");
LinearLayout layout = (LinearLayout)findViewById(R.id.linear);
layout.addView(adView);
adView.loadAd(new AdRequest());
*/
btCalcular.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
if((etPeso.getText().length()==0) || (etAltura.getText().length()==0) || (etIdade.getText().length()==0)){
Alerta("ATENÇÂO", "Existem campos vazios. Verifique!");
return;
}else{
peso = Double.parseDouble(etPeso.getText().toString());
altura = Double.parseDouble(etAltura.getText().toString());
idade = Double.parseDouble(etIdade.getText().toString());
resultado = peso /(altura*altura);
resultado = converterDoubleDoisDecimais(resultado);
pesoMin = 18.5*(altura*altura);
pesoMin= converterDoubleDoisDecimais(pesoMin);
pesoMax = 24.99*(altura*altura);
pesoMax = converterDoubleDoisDecimais(pesoMax);
tvResultado.setText("Resultado: "+resultado);
tvPesoIdeal.setText("Peso Ideal: Entre "+pesoMin+" Kgs e "+pesoMax+" Kgs.");
if (resultado <17){
tvCategoria.setText("Categoria: Muito abaixo do peso.");
return;
}
else{
if ((resultado>=17) && (resultado<=18.49)){
tvCategoria.setText("Categoria: Abaixo do Peso.");
return;
}
else{
if ((resultado>18.49)&& (resultado <=24.99)){
tvCategoria.setText("Categoria: Peso Ideal.");
return;
}
else{
if((resultado>24.99) && (resultado<=29.99)){
tvCategoria.setText("Categoria: Acima do peso.");
return;
}
else{
if((resultado>29.99) && (resultado<=34.99)){
tvCategoria.setText("Categoria: Obesidade I.");
return;
}
else{
if((resultado>34.99)&&(resultado<39.99)){
tvCategoria.setText("Categoria: Obesidade Severa.");
return;
}
else{
tvCategoria.setText("Categoria: Obesidade Mórbida.");
return;
}
}
}
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
finally{
etPeso.setText("");
etAltura.setText("");
etIdade.setText("");
}
}
});
}
public void Alerta(String titulo, String msg){
AlertDialog.Builder alerta = new AlertDialog.Builder(MainActivity.this);
alerta.setTitle(titulo);
alerta.setMessage(msg);
alerta.setNeutralButton("OK",null);
alerta.show();
}
public static double converterDoubleDoisDecimais(double valorDouble) {
DecimalFormat fr = new DecimalFormat("0.00");
String string = fr.format(valorDouble);
String[] part = string.split("[.]");
String string2 = part[0]+"."+part[1];
double valor = Double.parseDouble(string2);
return valor;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
I think I should use .setOnTouchListener
instead of .setOnClickListener
. Was that the solution?