Boa noite amigos,
Tenho uma TetxtView. que apliquei uma mascara no formato de data, assim o usuário insere uma data especifica no campo EX: 23/05/2021.
O problema é que preciso capturar os dados inseridos com a data separada em : dia, mês e ano. Tipo guardar este valores em uma variável.
Alguém pode ajudar?
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date data = format.parse(seuTextView.getText());
Só guardar a variável data em algum lugar.
Opa beleza amigo? Mas como capturo o mês em separado por exemplo: Se o usuário digitou: 26/05/2021 como pego na variável o dígito 05 , referente ao mês?
data.getDay()
data.getMonth()
data.getYear()
Show meu amigo! Vou testar e posto a solução…
Obrigado…
Amigo, não consegui utilizar: Primeiro pede para converter para : String.valueOff, depois persiste em erro em parse.
format.parse(seuTextView.getText().toString());
Qual erro deu no parse?
Parse fica sublinhado em vermelho, e seguindo a dica da plataforma manda modificar para: “Surround witch try/catch”.
Ah, sim.
O parse joga uma ParseException caso a String passada seja inválida.
Então pode seguir a dica do IDE e rodear com try/catch:
try {
format.parse(seuTextView.getText().toString());
} catch (ParseException ex) {
//String invalida foi passada, mostre uma mensagem de erro para o usuário ou algo assim.
}
Eu fiz aqui, sumiu o erro só que não jogou a mascara para o TextView.
Você disse que já tem uma máscara.
O código que passei é para pegar um texto e transformar em Date, para facilmente pegar o dia, mês e ano.
Explique melhor o problema.
Ah beleza amigo, tem razão… è que tinha retirado a mascara para teste. Desculpe os enganos… vou testar e dou o resultado…
1 curtida
Opa, realmente estou com dificuldades de resolver meu problema, estou postando o código para melhor visão:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNome = findViewById(R.id.etNome);
etDataNascimento = findViewById(R.id.etDataNascimento);
btProsseguir = findViewById(R.id.btProsseguir);
SimpleMaskFormatter smf = new SimpleMaskFormatter("NN/NN/NNNN");
MaskTextWatcher mtw = new MaskTextWatcher(etDataNascimento, smf);
etDataNascimento.addTextChangedListener(mtw);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date data = null;
try {
data = format.parse(etDataNascimento.getText().toString());
} catch (ParseException exception) {
exception.printStackTrace();
}
int dia = data.getDay();
int mes = data.getMonth();
int ano = data.getYear();
btProsseguir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// capturando os dados inseridos:
String nome = etNome.getText().toString();
int dataNascimento = Integer.parseInt(etDataNascimento.getText().toString());
//Criando a intent que vai iniciar a segunda activyt
Intent intent = new Intent (getApplicationContext(), Activity2.class);
// Passando dados pela intent:
intent.putExtra("pegarNome", nome);
intent.putExtra("pegarDataNascimento", dataNascimento);
// Disparando a intent:
startActivity(intent);
}
});
}
}
O problema é que não consigo capturar a date que o usuário vai adicionar e levar para a segunda Activity do jeito que está, só consigo se o usuário digitar apenas um digito (o primeiro) em relação a data.
Show amigo !!! Fiz como vc falou e funcionou perfeitamente… Obrigado pela dica de sempre.
" Aprendo e vencendo a cada dia"
Abraço a todos…
1 curtida