Counter zeroing for no reason

0

I have a method in which every time it fires, in addition to performing other operations, a certain counter cont must be incremented and then call another method in which it will check if the counter is greater than zero.

The problem is that when it checks if it is greater than zero and should be when the method that increments is called, but the counter automatically returns to zero for no reason strong> and returns the command that should be performed when it is zero.

Method that increments the counter

public void enviar(View view) {
    Toast.makeText(this, "O cadastro foi realizado com sucesso", Toast.LENGTH_LONG).show(); 
    Intent telaInicial = new Intent(this, Principal.class);
    startActivity(telaInicial);
    this.cont++;
    qntProd();
}

Checking method

public String qntProd() { 
    if(this.cont > 0) {
        return "Você possui " + this.cont + " produtos cadastrados";
    }else {
        return "Você não possui produtos cadastrados";
    }
}
The main class that calls the qntProd () method

public class Principal extends Activity {
    private TextView produtosCadastrados;
    private String retorno;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        produtosCadastrados = (TextView) findViewById(R.id.produtosCadastrados);
        //qntProd = produtos.qntProd();
        Cadastrar cadastrar = new Cadastrar();
        retorno = cadastrar.qntProd(cadastrar.cont);
        produtosCadastrados.setText(retorno);
        /*if(cadastrar.cont > 0) {
            produtosCadastrados.setText("Você possui " + cadastrar.cont + " produtos cadastrados.");
        }else {
            produtosCadastrados.setText("Você não possui produtos cadastrados.");
        }*/     
    }
    public void cadastra(View view) {
        Intent telaCadastra = new Intent(this, Cadastrar.class);
        startActivity(telaCadastra);
    }

}

Recommended Code

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        produtosCadastrados = (TextView) findViewById(R.id.produtosCadastrados);
        Intent it = getIntent();
        int cont = it.getIntExtra("valor", 0);
        it.putExtra("valor", cont);
        if(cont > 0) {
            retorno = "Você possui " + String.valueOf(cont) + " produtos cadastrados";
        }else {
            retorno = "Você não possui produtos cadastrados";
        }
        produtosCadastrados.setText(retorno);

    }
    
asked by anonymous 11.07.2018 / 19:58

1 answer

1

Error: When you finish executing the send method you open a new activity and within your OnCreate method you again instantiate the class Register (new Register ()) with this the counter is created again with 0 and this is always repeated, you do not save the counter, simply create another instance and try to verify, that is, your counter will never be greater than 0.

Tip: As you are not persisting the data, do not advise to create a new activity, every time it enters the method send return a boolean, if the method returns TRUE means that the activity can be clean, so you clear the screen data and leave the counter in the activity, with this the counter will be a single instance.

    
26.07.2018 / 20:06