Boa tarde,
Eu estou no meur primeiro semestre da faculdade e junto com meu grupo, resolvemos criar um aplicativo em Java no Android Studio, este aplicativo basicamente é uma calculadora de descontos a partir da quantidade de comprimidos que seriam descartados numa farmacia ficticia.
O primeiro teste do aplicativo funciona muito bem mas só é usado a Activity_Main em xml e em Java (deixarei o código abaixo), assim eu e meu grupo decidimos reformar o aplicativo e colocar “abas” usando o TabLayout e “fragmentos” para criar o efeito desejado. O problema foi que ao colocar o código do primeiro aplicativo neste segundo e fazer algumas reformas, quando o aplicativo roda e o usuario coloca as informações no EditText e clica no botão que aciona o cálculo, o aplicativo fecha, coisa que no primeiro aplicativo, não acontecia, ele funcionava bem.
Tentamos de tudo para tentar entender o motivo, chegamos até pensar que o código não está recolhendo as informações dos EditText, alguém poderia dar uma luz aos pobres iniciantes?
Já peço desculpas pelo código mal organizado!
Código do primeiro aplicativo (Activity_Main):
public class MainActivity extends AppCompatActivity {
private EditText classe;
private EditText editfarm;
private EditText comprimido;
private TextView resultado;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
classe=findViewById(R.id.classe);
editfarm=findViewById(R.id.editfarm);
comprimido=findViewById(R.id.comprimido);
resultado=findViewById(R.id.resultado);
}
public void calculo(View view) {
double comp = Double.parseDouble(comprimido.getText().toString());
double An = 3 + (comp - 1) * 0.2;
double An1 = 4 + (comp - 1) * 0.4;
double An2 = 3 + (comp - 1) * 0.3;
double An3 = 4 + (comp - 1) * 0.6;
double An4 = 4 + (comp - 1) * 0.7;
String remedio = editfarm.getText().toString();
String classes = classe.getText().toString();
remedio = remedio.toLowerCase();
classes = classes.toLowerCase();
switch (classes) {
case "analgesico":
if (remedio == "paracetamol")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "dipirona")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "novalgina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "mascalgina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "anti-inflamatorio":
if (remedio == "ibuprofeno")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "AAS")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "nimesulida")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "diclifenaco")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "anticoncepcional":
if (remedio == "Qlaira")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "iumi")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "tamisa")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "elanni")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
break;
case "antigripal":
if (remedio == "benegripe")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "cimegripe")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "coristina d")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "resfenol")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
break;
case "antialergico":
if (remedio == "loratadina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "histamin")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "allegra")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "prednisona")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "antibiotico":
if (remedio == "cefalenina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "penicilina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "amoxilina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "ciprofloxacino")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
break;
case "ansiolitico":
if (remedio == "rivotril")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
if (remedio == "fluoxetina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
break;
case "antidepressivo":
if (remedio == "sertralina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
if (remedio == "clonazepam")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
break;
default:
resultado.setText("Por favor, verifique as informações novamente");
}
}
}
Código que não funciona (Fragment):
package com.example.farmapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.DecimalFormat;
import androidx.viewpager.widget.ViewPager;
import java.text.DecimalFormat;
public class BlankFragment extends Fragment {
private EditText classe;
private EditText editfarm;
private EditText comprimido;
private TextView resultado;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_blank, container, false);
classe = getActivity().findViewById(R.id.classe);
editfarm = getActivity().findViewById(R.id.editfarm);
comprimido=getActivity().findViewById(R.id.comprimido);
resultado=getActivity().findViewById(R.id.resultado);
return view;
}
public void calculo(View view) {
double comp = Double.parseDouble(comprimido.getText().toString());
double An = 3 + (comp - 1) * 0.2;
double An1 = 4 + (comp - 1) * 0.4;
double An2 = 3 + (comp - 1) * 0.3;
double An3 = 4 + (comp - 1) * 0.6;
double An4 = 4 + (comp - 1) * 0.7;
String remedio = editfarm.getText().toString().toLowerCase();
String classes = classe.getText().toString().toLowerCase();
switch (classes) {
case "analgesico":
if (remedio.equals("paracetamol"))
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "dipirona")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "novalgina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "mascalgina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "anti-inflamatorio":
if (remedio == "ibuprofeno")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "AAS")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "nimesulida")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "diclifenaco")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "anticoncepcional":
if (remedio == "Qlaira")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "iumi")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "tamisa")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
if (remedio == "elanni")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An1));
}
break;
case "antigripal":
if (remedio == "benegripe")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "cimegripe")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "coristina d")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
if (remedio == "resfenol")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An2));
}
break;
case "antialergico":
if (remedio == "loratadina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "histamin")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "allegra")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
if (remedio == "prednisona")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An));
}
break;
case "antibiotico":
if (remedio == "cefalenina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "penicilina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "amoxilina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
if (remedio == "ciprofloxacino")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An3));
}
break;
case "ansiolitico":
if (remedio == "rivotril")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
if (remedio == "fluoxetina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
break;
case "antidepressivo":
if (remedio == "sertralina")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
if (remedio == "clonazepam")
{
resultado.setText(new DecimalFormat("O valor do seu desconto é de RS:#,##0.00").format(An4));
}
break;
default:
resultado.setText("Por favor, verifique as informações novamente");
}
}
}