[Resolvido ]Capturar dados no formato DATA de uma TetxtView
15 respostasResolvido
J
jotalins
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.
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?
R
RoinujNosde
data.getDay()
data.getMonth()
data.getYear()
J
jotalins
Show meu amigo! Vou testar e posto a solução…
Obrigado…
J
jotalins
Amigo, não consegui utilizar: Primeiro pede para converter para : String.valueOff, depois persiste em erro em parse.
R
RoinujNosde
format.parse(seuTextView.getText().toString());
Qual erro deu no parse?
J
jotalins
Parse fica sublinhado em vermelho, e seguindo a dica da plataforma manda modificar para: “Surround witch try/catch”.
R
RoinujNosde
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(ParseExceptionex){//String invalida foi passada, mostre uma mensagem de erro para o usuário ou algo assim.}
J
jotalins
Eu fiz aqui, sumiu o erro só que não jogou a mascara para o TextView.
R
RoinujNosde
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.
J
jotalins1 like
Ah beleza amigo, tem razão… è que tinha retirado a mascara para teste. Desculpe os enganos… vou testar e dou o resultado…
J
jotalins
Opa, realmente estou com dificuldades de resolver meu problema, estou postando o código para melhor visão:
etNome=findViewById(R.id.etNome);etDataNascimento=findViewById(R.id.etDataNascimento);btProsseguir=findViewById(R.id.btProsseguir);SimpleMaskFormattersmf=newSimpleMaskFormatter("NN/NN/NNNN");MaskTextWatchermtw=newMaskTextWatcher(etDataNascimento,smf);etDataNascimento.addTextChangedListener(mtw);SimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");Datedata=null;try{data=format.parse(etDataNascimento.getText().toString());}catch(ParseExceptionexception){exception.printStackTrace();}intdia=data.getDay();intmes=data.getMonth();intano=data.getYear();btProsseguir.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){// capturando os dados inseridos:Stringnome=etNome.getText().toString();intdataNascimento=Integer.parseInt(etDataNascimento.getText().toString());//Criando a intent que vai iniciar a segunda activytIntentintent=newIntent(getApplicationContext(),Activity2.class);// Passando dados pela intent:intent.putExtra("pegarNome",nome);intent.putExtra("pegarDataNascimento",dataNascimento);// Disparando a intent:startActivity(intent);}});}
}
J
jotalins
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.
R
RoinujNosde
2 problemas:
Você está pegando a data antes da hora. O onCreate é chamado quando a activity está sendo criada, então o usuário não vai ter digitado ainda. Teria que ser dentro do onClick();
Você tá fazendo um parseInt na data de nascimento, se tiver / dá erro, então é melhor usar o parse que eu falei, que é próprio pra datas.
J
jotalins1 like
Show amigo !!! Fiz como vc falou e funcionou perfeitamente… Obrigado pela dica de sempre.