How to reset or reset the app variables?

Asked

Viewed 152 times

1

I’m starting Android development (using JAVA language). I am developing an average calculation app that displays the average and the student’s situation (Approved, In Recovery and Failed). My question is how to reset or reset the app variables.

Note: Insert some conditions like:Do not receive values below 0 or above 10, and do not receive null values or spaces.

Example of execution:

1st Execution:

Note 1:9 Note 2:6 Average: 7

2nd Execution:

Note 1:8 Note 2:11 Average: 7 (Continues the same value as the previous execution)

How do I reverse this? Is there a specific command that can be inserted at the end of the app to reset the values?

Code of the app (Manifest):

package com.example.notasescolares;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    //Declarando objetos JAVA
    EditText edtNota1,edtNota2;
    TextView txtMedia,txtSituacao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Interligando o XML ao JAVA
        edtNota1 = findViewById(R.id.edtNota1);
        edtNota2 = findViewById(R.id.edtNota2);
        txtMedia = findViewById(R.id.txtMedia);
        txtSituacao = findViewById(R.id.txtSituacao);
    }

    //Quando clicado o botão acontece um evento
    public void processar(View view) {
        boolean ok = true;

        //Lógica para não crashar o app
        if(edtNota1.getText().toString().trim().isEmpty()){
            ok = false;
            edtNota1.setError(getText(R.string.msgErroNumVazio));
        }

        if(edtNota2.getText().toString().trim().isEmpty()){
            ok = false;
            edtNota2.setError(getText(R.string.msgErro));
        }

        if(ok == true) {
            float nota1 = Float.parseFloat(edtNota1.getText().toString());
            float nota2 = Float.parseFloat(edtNota2.getText().toString());
            float media;
            boolean numValido = true;

            //Verificando numeros validos recebidos(0 a 10)
            if(nota1 < 0 || nota1 > 10){
                edtNota1.setError(getText(R.string.msgErro));
                numValido = false;
            }
            if(nota2 < 0 || nota2 > 10){
                edtNota2.setError(getText(R.string.msgErro));
                numValido = false;
            }

            //Se valido execute o processamento
            if(numValido) {
                //Calculo da média
                 media = (nota1 + nota2) / 2;

                //Definindo situação
                txtMedia.setText(String.format("%.2f", media));
                if(media >= 7) {            //Aprovado
                    txtSituacao.setText(R.string.strAprovado);
                }else if (media >= 5) {     //Recuperação
                    txtSituacao.setText(R.string.strRecuperacao);
                }else {                     //Reprovado
                    txtSituacao.setText(R.string.strReprovado);
                }
            }

        }
    }
}

2 answers

1

//Quando clicado o botão acontece um evento
    public void processar(View view) {
        boolean ok = true;
        float nota1 = 0;
        float nota2 = 0;
        float media = 0;
        boolean numValido = false;

        //Lógica para não crashar o app
        if(edtNota1.getText().toString().trim().isEmpty()){
            ok = false;
            edtNota1.setError(getText(R.string.msgErroNumVazio));
        }

        if(edtNota2.getText().toString().trim().isEmpty()){
            ok = false;
            edtNota2.setError(getText(R.string.msgErro));
        }

        if(ok == true) {
            nota1 = Float.parseFloat(edtNota1.getText().toString());
            nota2 = Float.parseFloat(edtNota2.getText().toString());
            media;
            numValido = true;

            //Verificando numeros validos recebidos(0 a 10)
            if(nota1 < 0 || nota1 > 10){
                edtNota1.setError(getText(R.string.msgErro));
                numValido = false;
            }
            if(nota2 < 0 || nota2 > 10){
                edtNota2.setError(getText(R.string.msgErro));
                numValido = false;
            }

            //Se valido execute o processamento
            if(numValido) {
                //Calculo da média
                 media = (nota1 + nota2) / 2;

                //Definindo situação
                txtMedia.setText(String.format("%.2f", media));
                if(media >= 7) {            //Aprovado
                    txtSituacao.setText(R.string.strAprovado);
                }else if (media >= 5) {     //Recuperação
                    txtSituacao.setText(R.string.strRecuperacao);
                }else {                     //Reprovado
                    txtSituacao.setText(R.string.strReprovado);
                }
                nota1 = 0;
                nota2 = 0;
                media = 0;
                numValido = false;
            }

        }
    }
  • I added those lines of code you suggested. But it says that the variable does not accept null(float and null incompatible types). And instead of null I tried to insert zero in the variables.But still it was the same thing.It is displaying the results of the 1st execution (correct data) and the 2nd execution (wrong data) not calculating but displaying the values of the 1st execution.

  • updated the answer, maybe putting the variables declaration when entering this method does not give this problem

0

You apparently don’t need to recover the view in your process. Call this function inside your setOnClickListener button.

private boolean processa(){
//testo se é float ou não
try {
     Float.parseFloat(string)

 float nota1 = Float.parseFloat(edtNota1.getText().toString());
        float nota2 = Float.parseFloat(edtNota2.getText().toString());
        float media;
        boolean numValido = true;

            //Verificando numeros validos recebidos(0 a 10)
            if(nota1 < 0 || nota1 > 10 || (nota2 < 0 || nota2 > 10){
// retorna mensagem ao usuario de erro
                return false;
            }
            //Calculo da média
             media = (nota1 + nota2) / 2.0; // para retornar as frações

            //Definindo situação
            txtMedia.setText(String.valueOf(media));
            if(media >= 7) {            //Aprovado
                txtSituacao.setText(R.string.strAprovado);
               return true;
            }else if (media >= 5) {     //Recuperação
                txtSituacao.setText(R.string.strRecuperacao);
               return true;
            }else {                     //Reprovado
                txtSituacao.setText(R.string.strReprovado);
               return true;
            }

}
catch (NumberFormatException ex) {
//retorno mensagem pedindo pra inserir um numero
}
} 

Browser other questions tagged

You are not signed in. Login or sign up in order to post.