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:
-
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;
-
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.