Como acessar funcções do campo EditText, onEnter, SetFocus

5 respostas
A

Olá boa tarde!

Tenho os seguinte problema:

Estou usando Eclipse juno + Android 4.2.
(Sou Iniciante)

Tenho que ler um código de barras e carregar um EditText e em seguida simular um
e faze-lo perder o foco ou sair e acessar o onExit , pegar os dados e guardar numa
lista e voltar o foco ou acessar o onEnter e limpar o campo;
Veja o loop vai ficar entre o EditText e o processamento até que eu pressione o
botão ou tbém posso digitar manualmente e pressionar a tecla e
finalizar gerando uma arquivo XML.

Bom que preciso sabe é como:

1-Que função usar para saber que o EditText ganhou e perdeu o Focus?

2-Que função usar para saber se o EditText Entrou ou Sai do campo?

3-Que função usar para saber se o EditText recebeu um pelo teclado?

4-Após ler o código de barras, como simular a tecla para que o cursor sai por onExit ou perca o focus?

Só estou precisando saber somente isto, pois o resto já está pronto.

Desde já meus agradecimentos,

100+

ANT.CARLOS/SP

5 Respostas

V

Enter ? Cara isso é mobile não programação delphi para desktop.

F
1-Que função usar para saber que o EditText ganhou e perdeu o Focus?
EditText editText = (EditText) findViewById(R.id.edittxt);
 editText .setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus){
             // faz algo
            }             
        }
    });
2-Que função usar para saber se o EditText Entrou ou Sai do campo? Saber se alguma coisa foi escrita ?
EditText editText = (EditText) findViewById(R.id.edittxt);
editText.addTextChangedListener(new TextWatcher() {
          // depois de terminar de escrever
          public void afterTextChanged(Editable s) {}
          // antes da ultima edição
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
          //edição em tempo real
          public void onTextChanged(CharSequence s, int start, int before, int count) {}
       });
3-Que função usar para saber se o EditText recebeu um pelo teclado?
EditText editText = (EditText) findViewById(R.id.edittxt);
editText.setImeActionLabel("Custom text", KeyEvent.KEYCODE_ENTER);
editText.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_DOWN)
        {
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_DPAD_CENTER:
                case KeyEvent.KEYCODE_ENTER:
                     //enter pressionado
                    return true;
                default:
                    break;
            }
        }
        return false;
    }
});

4-Após ler o código de barras, como simular a tecla para que o cursor sai por onExit ou perca o focus?
Não entendi..
mas se quer mudar o focus é so requestFocus.

A

bom dia!
Blz, obrigado pela atenção!

Então, fiz os teste e deu certo.
Quanto a pergunta 4, o q eu queria fazer é simular um checkout de supermercado, onde o loop fica entre o Edit, processamento, edit até ser finalizado pelo operador.

O leitor de código de barras já inseri um após ler e o obj edit já perde o foco automático.

100+

ANT.CARLOS/SP

F

Isso vai simular um click em uma view

Caso não seja isso, quando você lê um código de barra provavelmente retorna algo por algum método… só chame direto o método que é chamado quando alguém aperta enter no edittext;

A

Olá boa tarde!
Estou com seguinte problema:
Ao gerar o Arquivo do XML é gerado um erro na linha

Writer file = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dirXml+nomArq),“ISO-8859-1”));

E ao pegar horas, minutos, segundos tbém gera um erro.

Alguém poderia me ajudar nesta ?

Desde já meus agradecimentos.

ANT.CARLOS/SP

06-30 17:51:41.579: W/System.err(2355): java.io.FileNotFoundException: /c:/temp4/ARQUIVO_XML.XML: open failed: ENOENT (No such file or directory) 06-30 17:51:41.579: W/System.err(2355): at libcore.io.IoBridge.open(IoBridge.java:416) 06-30 17:51:41.579: W/System.err(2355): at java.io.FileOutputStream.<init>(FileOutputStream.java:88) 06-30 17:51:41.579: W/System.err(2355): at java.io.FileOutputStream.<init>(FileOutputStream.java:128) 06-30 17:51:41.579: W/System.err(2355): at java.io.FileOutputStream.<init>(FileOutputStream.java:117) 06-30 17:51:41.590: W/System.err(2355): at com.br.teste012.GeraXml.setGeraXML(GeraXml.java:68) 06-30 17:51:41.590: W/System.err(2355): at com.br.teste012.MainActivity$3.onClick(MainActivity.java:71)

public void setGeraXML() throws IOException {
data = ManipulaData.getDataAtual();

String dirXml = "c:/temp/";
   String nomArq =  "ARQUIVO_XML.XML";
   

   Calendar agora = null;
   // horas, minutos e segundos
   horas = agora.get(Calendar.HOUR);
   minutos = agora.get(Calendar.MINUTE);
   segundos = agora.get(Calendar.SECOND);	    
   
   
   StringBuilder xml = new StringBuilder();

xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
   .append("<codbar>999999999</codbar>")
   .append("<data>99/99/99</data")
   .append("<horas>99:99:99</horas");

   System.out.println(xml.toString());   .....até aqui tudo ok
   
  Writer file = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dirXml+nomArq),"ISO-8859-1"));
   file.write(xml.toString());
   file.close();

}

Criado 23 de junho de 2013
Ultima resposta 30 de jun. de 2013
Respostas 5
Participantes 3