GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Ajuda para terminar um código em Java no Android Studio

Tags: #<Tag:0x00007fd7b3e67ae8> #<Tag:0x00007fd7b3e67930>

Olá, comecei a pouco a estudar sobre programação e sou leigo no assunto ainda, preciso de ajuda para desenvolver uma aplicação Android que analise se um determinado ano é bissexto ou não. Para isso, a APP deverá ter duas telas de interação com o usuário:

  1. Uma das telas deve permitir que o usuário faça a entrada de um valor numérico, que representa o ano a ser analisado, e um botão que irá abrir a segunda tela da APP;

  2. A segunda tela deve informar ao usuário se o ano analisado é ou não é bissexto, além de permitir a entrada de um texto que representa o nome de uma pessoa e um botão, que irá permitir que o usuário compartilhe esta informação com outra pessoa (Com o nome definido na caixa de texto).

Exemplo de mensagens compartilhadas:

“Ana, o ano de 2003 não é um ano Bissexto!”

“Roberta, o ano de 2004 é um ano Bissexto!”

“João, o ano de 1900 não é um ano Bissexto!”

infelizmente a dias estou “empacado” com meu código, e precisava muito de ajuda, se alguém poder me dar uma força ficaria muito grato.
Meu código até o momento, gostaria de ajuda para fazer o resultado aparecer em uma segunda tela seguido de uma frase como a descrita logo acima.

public class MainActivity extends AppCompatActivity {
//

  private EditText idAno;
  private TextView resultado;
  EditText idName;
//
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //
    idAno = (EditText) findViewById(R.id.idAno);
    idName = (EditText) findViewById(R.id.idName);
    resultado = (TextView) findViewById(R.id.idResultado);
}
 public void calcularAno(View view){
     int anobis = Integer.parseInt(idAno.getText().toString());
     resultado.setText(String.valueOf((anobis % 400 == 0) || (anobis % 4 == 0 && anobis % 100 != 0)));

     Intent i = new Intent(this, Tela2.class);

     i.putExtra("resultado", String.valueOf(resultado));

     startActivity(i);

    }

}

Mande o resultado como boolean e não textview.
Deveria mandar o ano tbm para a outra tela, não?

Como está o código da outra tela?

1 Curtida

Olá muito obrigado pela ajuda.
então minha segunda tela o código praticamente está inexistente, pois tentei diversas coisas, mas sempre dava erro então está praticamente em branco:

public class Tela2 extends AppCompatActivity {

TextView idTela;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tela2);

    idTela = (TextView)findViewById(R.id.idTela);



    }


    }
Intent intent = getIntent();
boolean resultado = intent.getBooleanExtra("resultado", false);
int ano = intent.getIntExtra("ano", 0);

Pega os dados assim na outra tela e exiba-os.

1 Curtida

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Tela2 extends AppCompatActivity {

TextView idTela;
TextView idName;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tela2);

    idTela = (TextView)findViewById(R.id.idTela);
    idName = (TextView)findViewById(R.id.idName);

    Intent i = getIntent();

    boolean resultado = i.getBooleanExtra("resultado", false);

    int anobis = i.getIntExtra("ano", 0);

    String situacao = null;

    if (resultado = false)
        situacao = "não é um ano bissexto";
    else
        situacao = "é um ano bissexto";

    String msg = idName + " aaaa " + situacao + " aaaaa ";

    idTela.setText(msg);

    }

}

Estou tentando desenrolar aqui, porem estou com dificuldade de colocar o nome que é digitado na primeira tela aparecer com o resultado na segunda tela, e meu resultado não está funcionado muito bem, pois ele só da que é bissexto mesmo não sendo…

Primeiro, recomendo usar {} nos ifs e elses.
Segundo, = não compara, ele atribui. Use ==.
E nem é necessário usar esse sinal, como a variável é boolean, pode jogar direto no if:

if (resultado) {
   //true
} else {
  //false
}
1 Curtida

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
//TELA 1

public class MainActivity extends AppCompatActivity {
//

  private EditText idAno;
   EditText idName;

//
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //
    idAno = (EditText) findViewById(R.id.idAno);

}
 public void calcularAno(View view){

     int ano = Integer.parseInt(idAno.getText().toString());
     boolean resultado = (((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0));

     Intent i = new Intent(this, Tela2.class);
     Intent t = new Intent(this, Tela2.class);

     i.putExtra("resultado", String.valueOf(resultado));
     t.putExtra("ano", String.valueOf(ano));



     startActivity(i);

    }

}

TELA 2
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.EditText;

public class Tela2 extends AppCompatActivity {

TextView idTela;
EditText idName;
EditText idAno;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tela2);

    idTela = (TextView)findViewById(R.id.idTela);
    idName = (EditText) findViewById(R.id.idName);
    idAno = (EditText) findViewById(R.id.idAno);

    Intent i = getIntent();
    Intent t = getIntent();
    int ano = t.getIntExtra("ano", 1111);

    boolean resultado;
    resultado = i.getBooleanExtra("resultado", false);

    String situacao = null;
    if (resultado) {
        //true
        situacao = " não é um ano bissexto ";
    }
    else  {
        //false
        situacao = " é um ano bissexto ";
    }

    String msg = ano + " o ano de " + resultado + situacao + " ! ";

    idTela.setText(msg);

    }

}

a saída da segunda tela está saindo assim:
" 1111 o ano de false é um ano bissexto ! "
não sei se é a expressão minha para calcular se o ano é bissexto que está errada, mas sempre está dando false, independente do ano que coloque, e no “1111” teria que ser o nome que é digitado na primeira tela porem não estou conseguindo colocar o nome ali, ai coloquei o ano ali para ver como funciona, porem quando tento colocar o nome não vai o que será que pode ser?

Não precisa fazer valueOf nesses 2, o putExtra aceita todos os primitivos.

Essas views são desnecessárias, vc só vai precisar da view para mostrar o resultado.

Só precisa de uma variável dessa.

Aqui parece que o código tá invertido. Ou faça if (!resultado) ou troque as mensagens, coloque o “não” embaixo por ex.

Você não passou o nome da outra tela. Coloca no intent tbm. i.putExtra("nome", nomeDaPessoa) e pega do outro lado com getStringExtra

1 Curtida

Muito obrigado pela sua ajuda amigo, me esclareceu muita coisa.

//