Manter estado do teclado virtual após rotação do dispositivo

96 views
Skip to first unread message

Matheus Silva

unread,
Jun 23, 2014, 2:54:55 PM6/23/14
to androidb...@googlegroups.com
Já tentei várias coisas mas não consigo manter o estado (hide/show) após a rotação. Só lembrando que o edittext está dentro de um fragment.
Desde já, obrigado.

Thiago M. de França

unread,
Jun 23, 2014, 6:56:47 PM6/23/14
to androidb...@googlegroups.com


On Mon, Jun 23, 2014 at 3:54 PM, Matheus Silva <informa...@gmail.com> wrote:
Já tentei várias coisas mas não consigo manter o estado (hide/show) após a rotação. Só lembrando que o edittext está dentro de um fragment.
Desde já, obrigado.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

All it takes is one bad day to reduce the sanest man alive to lunacy.
That's how far the world is from where i am.
Just one bad day!

Thiago M. de França

unread,
Jun 23, 2014, 6:57:38 PM6/23/14
to androidb...@googlegroups.com
tenta isso ai... acho q é esse o seu problema.

foi mal pelo flood.

Matheus Silva

unread,
Jun 25, 2014, 12:21:57 PM6/25/14
to androidb...@googlegroups.com
Thiago, eu to ligado no processo de recriação da activity na rotação, o que eu nao consigo eh manter o estado do teclado aberto ou fechado. Eu não consegui obter o estado do teclado e tb nao esta nem funcionando a tentativa de abri-lo depois da recriação. Nao ta dando nada certo entao eu resolvi pedir ajuda aqui pra saber se tem um outro jeito.
Eu queria por exemplo que funcionasse igual o edittext da barra de endereço do chrome. Quando eu fecho o teclado, o focus nao esta mais no edittext, entao acho que ali ele verifica se o focus esta ou nao no edittext ao inves de verificar se o teclado esta aberto ou fechado. Mas o que mais importa eh, se eu clicar no edittext (o que vai fazer com que o teclado abra) e depois virar o celular, quero que ele entre naquele modo de escrita em landscape automaticamente.

Thiago M. de França

unread,
Jun 25, 2014, 12:44:33 PM6/25/14
to androidb...@googlegroups.com
vei não tô entendendo qual a bronca... mas pra "pegar" o status do teclado tenta isso aqui!

e dá uma olhada nisso aqui pra tentar ajudar.


2014-06-25 13:21 GMT-03:00 Matheus Silva <informa...@gmail.com>:
Thiago, eu to ligado no processo de recriação da activity na rotação, o que eu nao consigo eh manter o estado do teclado aberto ou fechado. Eu não consegui obter o estado do teclado e tb nao esta nem funcionando a tentativa de abri-lo depois da recriação. Nao ta dando nada certo entao eu resolvi pedir ajuda aqui pra saber se tem um outro jeito.
Eu queria por exemplo que funcionasse igual o edittext da barra de endereço do chrome. Quando eu fecho o teclado, o focus nao esta mais no edittext, entao acho que ali ele verifica se o focus esta ou nao no edittext ao inves de verificar se o teclado esta aberto ou fechado. Mas o que mais importa eh, se eu clicar no edittext (o que vai fazer com que o teclado abra) e depois virar o celular, quero que ele entre naquele modo de escrita em landscape automaticamente.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Matheus Silva

unread,
Jun 25, 2014, 4:19:30 PM6/25/14
to androidb...@googlegroups.com
Ja tentei este exemplo o stack, sempre retornava false;
Pra ter uma ideia, eu quero que o edittext tenha exatamente o mesmo funcionamento do edittext do chrome. Isso basta.
Mas nao, ele abre e fecha o teclado de um jeito que eu nao entendo nem a logica.

Thiago M. de França

unread,
Jun 25, 2014, 4:25:11 PM6/25/14
to androidb...@googlegroups.com
cara deu uma sacada no segundo link?

Então, nunca tive problema com isso. Eu não tenho um android, uso iphone(hehehehe), mas se não me engano nas configurações tem alguma coisa pra bloquear isso... não tenho certeza; será q é uma onda dessa? Não consigo imaginar outra coisa... 

Dá algum erro? 

Matheus Silva

unread,
Jun 25, 2014, 4:25:21 PM6/25/14
to androidb...@googlegroups.com
Pra começar eu queria que o edittext perdesse o foco quando o teclado não esta visivel, pra isso eu extendi o edittext numa classe interna.
Soh que, pra variar, eu nao to conseguindo inflar essa droga. Ta dando erro no xml pq a classe eh interna. Aí eu vi que era pq a classe era interna entao eu tentei o <view class="package.classe$classeinterna" mas tb nao deu certo.
Android é mto desanimador pq fode nossa vida com umas coisas mto, mto bestas.

Thiago M. de França

unread,
Jun 25, 2014, 4:29:39 PM6/25/14
to androidb...@googlegroups.com
cara geralmente se faz o contrário... o teclado some qndo ele sai do campo. Qual é o erro q tá dando?


--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Matheus Silva

unread,
Jun 25, 2014, 4:47:21 PM6/25/14
to androidb...@googlegroups.com
POR DEUS CARA POR JESUS CRISTO como que pode eu nao conseguir extender um EditText e usar. Até um chinpanzé em dois dias com o livro sabe fazer isso e eu nao consigo. Android me faz sentir um retardado.

06-25 17:41:59.819: E/AndroidRuntime(9347): FATAL EXCEPTION: main
06-25 17:41:59.819: E/AndroidRuntime(9347): Process: com.example.irclient2, PID: 9347
06-25 17:41:59.819: E/AndroidRuntime(9347): android.view.InflateException: Binary XML file line #8: Error inflating class com.example.irclient2.adapter.MyEditText
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.createView(LayoutInflater.java:603)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at com.example.irclient2.fragment.ChatFragment.onCreateView(ChatFragment.java:49)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.os.Handler.handleCallback(Handler.java:733)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.os.Looper.loop(Looper.java:136)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.app.ActivityThread.main(ActivityThread.java:5001)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at java.lang.reflect.Method.invokeNative(Native Method)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at java.lang.reflect.Method.invoke(Method.java:515)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at dalvik.system.NativeStart.main(Native Method)
06-25 17:41:59.819: E/AndroidRuntime(9347): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
06-25 17:41:59.819: E/AndroidRuntime(9347):     at java.lang.Class.getConstructorOrMethod(Class.java:472)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at java.lang.Class.getConstructor(Class.java:446)
06-25 17:41:59.819: E/AndroidRuntime(9347):     at android.view.LayoutInflater.createView(LayoutInflater.java:568)
06-25 17:41:59.819: E/AndroidRuntime(9347):     ... 20 more


A classe é essa:
public class MyEditText extends EditText {

   
public MyEditText(Context context) {
       
super(context);
   
}

   
@Override
   
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
       
if (keyCode == KeyEvent.KEYCODE_BACK) {
           
this.clearFocus();
       
}

       
return super.onKeyPreIme(keyCode, event);
   
}

}

E o layout é esse:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:gravity="bottom"
   
android:orientation="vertical" >

   
<com.example.irclient2.adapter.MyEditText
       
android:id="@+id/chatinput"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_alignParentBottom="true"
       
android:imeOptions="actionSend|flagNoExtractUi"
       
android:inputType="textCapSentences" />

   
<ListView
       
android:id="@+id/chatlist"
       
android:layout_width="match_parent"
       
android:layout_height="match_parent"
       
android:layout_above="@id/chatinput"
       
android:background="@drawable/fundo_chat"
       
android:divider="@android:color/transparent"
       
android:dividerHeight="1.0sp"
       
android:padding="5dp"
       
android:scrollingCache="false"
       
android:smoothScrollbar="true" >
   
</ListView>

</RelativeLayout>



Jonas Alves

unread,
Jun 25, 2014, 5:05:22 PM6/25/14
to androidb...@googlegroups.com

Seu construtor está errado:

http://developer.android.com/training/custom-views/create-view.html

"at a minimum you must provide a constructor that takes a Context and an AttributeSet object as parameters"

Matheus Silva

unread,
Jun 25, 2014, 5:29:14 PM6/25/14
to androidb...@googlegroups.com
Entendi. Bom, agora pelo menos ele esta com foco apenas quando o teclado esta visivel, que é uma parte do que eu queria. O resto agora é manter o estado do teclado. O que esta me intrigando é que ao ir de landscape pra portrait, ele continua com o teclado aparecendo. De portrait pra landscape, o fdp fecha o teclado sem mais nem menos. Pq?

Matheus Silva

unread,
Jun 25, 2014, 6:02:45 PM6/25/14
to androidb...@googlegroups.com
Nem usando esse trecho no onCreateView() o teclado continua aberto após a rotação:

if (savedInstanceState.getBoolean(KEYBOARDSHOW)) {
                edittext
.requestFocus();

               
InputMethodManager imm = (InputMethodManager) activity
                       
.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm
.showSoftInput(edittext, InputMethodManager.SHOW_FORCED);
           
}

Lembrando que eu to usando android:windowSoftInputMode="stateUnchanged|adjustResize"

É coisa de maluco....

Matheus Silva

unread,
Jul 4, 2014, 11:29:47 AM7/4/14
to androidb...@googlegroups.com
POR FAVOR. PELO AMOR DE DEUS. EU IMPLORO. ME AJUDEM.
EU PAGO. PASSE A CONTA CORRENTE QUE EU DEPOSITO ALGUM VALOR. MAS PELO AMOR DE DEUS ME AJUDEM ANTES QUE EU DESISTA DESSE PROJETO. JA TENTEI DE TUDO, ESTOU PARADO NISSO A MAIS DE UM MÊS E TODO O MEU PLANEJAMENTO JA ERA. TUDO ISSO POR CAUSA DE UMA COISA TÃO INSIGNIFICANTE COMO RECUPERAR O ESTADO DE UM TECLADO.
EU JA ELABOREI TODO O CHAT, AS LISTVIEWS, OS FRAGMENTS, TUDO, MAS ESTOU PARADO, COMPLETAMENTE PARADO PORQUE NÃO TENHO A COMPETÊNCIA PRA SIMPLESMENTE ABRIR UM TECLADO APÓS A ROTAÇÃO CASO ELE ESTIVESSE ABERTO ANTES DA ROTAÇÃO.
PELO AMOR DE DEUS, JESUS, ESPIRITO SANTO, EU IMPLORO, EU NAO SEI MAIS O QUE FAZER.

Android Brasil - Dev

unread,
Jul 4, 2014, 12:12:33 PM7/4/14
to androidb...@googlegroups.com
Usuário banido.

Geovani de Souza

unread,
Jul 4, 2014, 1:19:28 PM7/4/14
to androidb...@googlegroups.com
Coitado, ninguém sugeriu pra ele deixar essa ideia de lado...

Douglas Drumond

unread,
Jul 4, 2014, 2:28:04 PM7/4/14
to androidb...@googlegroups.com
Ele já foi banido da lista uma vez. Tenho ele no Skype, sugeri que assumisse o erro, pedisse desculpas p moderador e voltasse, não sei se fez isso ou se criou outro e-mail. Pelo visto, não aprendeu.

MAS… Tópico encerrado, finalmente.

2014-07-04 14:19 GMT-03:00 Geovani de Souza <geovani...@gmail.com>:
Coitado, ninguém sugeriu pra ele deixar essa ideia de lado...

--

Matheus Silva

unread,
Jul 6, 2014, 3:26:37 AM7/6/14
to androidb...@googlegroups.com
Implorar por ajuda é motivo pra ban?

Matheus Silva

unread,
Jul 6, 2014, 3:34:13 AM7/6/14
to androidb...@googlegroups.com
Claro neh cara. Eh muito mais fácil, PRA TODO MUNDO, vir aqui e falar merda igual sempre fazem, do que tentar resolver meu problema.
Sabe, estou absolutamente cansado disso tudo. Cansado de programação, principalmente pra android.
Pq no Android Developer é tudo bonitinho os tutoriais. No Stack é tudo bonitinho as ajudas, mas quando eu vou botar a mão na massa nao é nada disso. É problema atrás de problema e por maior que seja a minha boa vontade em aprender e desenvolver algo, não é suficiente. Principalmente pelo fato de que eu não tenho onde pedir ajuda.
É sempre assim.
"Banido!";
"Você não sabe procurar";
"Você não procura e já vem pedir ajuda";
"Você não aprendeu o básico da programação;"

Sinceramente, eu juro por Deus que eu preferia ter nascido com um cérebro de funkeiro que não entende nada de lógica do que passar por isso sempre e toda vez que aparece outro erro misterioso como esse no meu caminho.
Na boa, cansei. Se quiserem me ajudar, ok. Se quiserem me banir, ok. Se quiserem deixar pra lá, ok.
Eu to deletando meu eclipse e o meu projeto o assembla. Desisto.

Geovani de Souza

unread,
Jul 6, 2014, 9:08:18 AM7/6/14
to androidb...@googlegroups.com
Matheus, não acompanhei suas discussões "das outras vezes", mas pra uma primeira impressão, me parece que te falta um pouco de humildade.

Não sei de onde vc tirou que programar é coisa fácil. Há algumas pesquisas que dizem que para uma pessoa sem conhecimento aprender a utilizar um PC "da forma correta" demora cerca de 6 anos. Em desenvolvimento não é diferente...

Se vc está tendo dificuldade, não é com o Android, muito menos com as ferramentas, mas sim com o paradigma que a linguagem apresenta. Desenvolver pra Android não é a mesma coisa que desenvolver pra Web ou pra um Desktop, e isso é uma coisa que muita gente ignora.

- "Mas eu já sei a linguagem, programação é tudo igual"

Mentira.

Cada plataforma tem seu jeitão e devemos conhecer pra entender como funciona e como extrair o máximo de cada lado.

Já vi várias discussões aqui na lista em que bastava a pessoa SABER O QUE PERGUNTAR e a resposta aparecia. Outras ainda bastava ter lido a DOCUMENTAÇÃO OFICIAL por 15 minutos e teria não só resolvido o problema, mas teria outras ideias ainda mais legais...

Não estou te repreendendo por "não saber procurar" ou "implorar ajuda". Pouca gente sabe que, por exemplo, mais de 90% do bom conteúdo técnico sobre tecnologia (não só desenvolvimento) está em inglês. Inglês não é opcional, mas sim item obrigatório. Haters gonna hate.

Ninguém nasce sabendo, desde o iniciante que aprendeu a fazer um 'if' até o moderador da lista ou os engenheiros que criaram o Android.

Se quer um conselho, procure se acalmar e ser mais humilde. Depois, planeje o que quer fazer. Deus sabe que eu não sou fã de planejamento, mas mesmo assim, sempre pego um papel e caneta, um .txt em branco ou uma ferramenta mais elaborada e tento listar os itens que quero pra um projeto, desde as funcionalidades-chave até os mínimos detalhes de um campo de texto. Outra dica é não estuprar a tecnologia. Procure "coçar sua coceira" e RESOLVER seu problema antes de tentar resolver o dos outros, ou ainda, criar novos. Não sei qual era o objetivo do seu projeto (coisa que vc poderia ter citado antes e que provavelmente produziria sugestões pra "tentar de outra forma"), mas tenho certeza que havia outra forma.

Pra concluir, Thomas Edison, que ficou famoso não por ter inventado a lâmpada, mas por ser um grande empreendedor americano que criou todo o ecossistema/modelo de negócio utilizado até hoje pelas geradoras (hidrelétricas, termelétricas, etc) até as companhias de energia elétrica que utilizamos até hoje, disse uma frase (que não estou certo da transcrição correta):

"Ao criar a lâmpada eu não fracassei 10.000 vezes, mas apenas encontrei 10.000 formas que não funcionam."

Felipe Aron

unread,
Jul 6, 2014, 12:25:37 PM7/6/14
to androidb...@googlegroups.com
Resumindo, muito mimimi e pouca ação! Na hora do aperto muitos ai ficam reclamando o quanto a vida e profissão é ingrata!

Se não ta contente com a área de atuação pula fora! Programação não é pra qualquer um. Essa é pura e simples verdade!

Eu mesmo, posso ser médico. Só estudar, mas ter vocação é outros quinhentos, coisa que pra doctor não tenho nem um pouco... e o mesmo acontecem com alguns da nossa área de TI/Programação.
 


--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Programador

luciofm

unread,
Jul 6, 2014, 1:21:45 PM7/6/14
to androidb...@googlegroups.com
Escrever em bold, CAPS LOCK, E EM VERMELHO não é uma atitude de respeito com os usuários da lista, simples assim...

Se você quer continuar na lista, procure ter mais respeito com as pessoas que estão aqui de livre e espontânea vontade usando seu tempo livre para ajudar os outros...

Ninguém lhe deve nada, então seja cortês quando for pedir uma ajuda.

Att.

Lúcio Maciel
luc...@gmail.com

Luis Fernando Junior

unread,
Jul 7, 2014, 7:57:12 AM7/7/14
to androidb...@googlegroups.com
Também não acompanhei suas outras discussões... mas veja se isso te ajuda.

Coloque essa tag na sua activity:

android:configChanges="orientation|screenSize"


Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and itsonConfigurationChanged() method is called.

Note: Using this attribute should be avoided and used only as a last resort. Please read Handling Runtime Changes for more information about how to properly handle a restart due to a configuration change.

Matheus Silva

unread,
Jul 7, 2014, 4:06:47 PM7/7/14
to androidb...@googlegroups.com
Lucio, Tudo bem, desculpem eu não sabia que era contra as regras escrevem assim, eu só quis desesperadamente chamar atenção pro meu problema.
Luis Fernando: é altamente recomendável lidar com a recriação da activity ao inves de ignora-la com o configChanges, tanto por parte do Google quanto por parte de diversos tutoriais que encontrei por aí.
Felipe Aron, não sei dizer se tenho vocação ou não. Gosto muito de lógica e justamente por as vezes encontrar alguns problemas que parecem ser ilógicos as vezes eu me desespero e fico irritado, e as vezes queria ter dom para algo mais valorizado como musica por exemplo, mas não adianta, é assim que eu sou...
Geovani, obrigado por todo o tempo gasto para escrever isto, li tudo com atenção, obrigado.
Douglas, desculpe se eu te incomodei o suficiente para voce me bloquear do skype como pareceu ter feito, desculpe mesmo. E sim, eu enviei o e-mail explicando tudo e pedindo desculpas, não adiantou nada e nem obtive resposta. Por isso criei este.
Para finalizar, vou resumir bastante.

Eu já estou com estes dois problemas há meses no meu projeto. Enquanto tento resolve-los, não parei. Continuei fazendo o resto e pesquisando e tentando resolver estes dois, por mais de um mês. Não, eu juro que não sou daqueles que encontra um problema e quer a resposta mastigada, eu conheço gente assim que faz isso comigo. Eu não tenho dificuldade com o inglês, eu leio bastante o Android Developer e o stackexchange e eu formulo diversas perguntas para o mesmo problema, em ingles, em portugues, eu leio e acompanho as respostas, testo, re-testo, faço comentarios sobre o que não deu certo. Leio e entendo as coisas no Developer, entendo a logica dos objetos e do fluxo de dados (exceto eh threds que isso ainda fico perdido), e mesmo assim, nada deu certo.
É por isso que as vezes eu fico muito irritado e me sinto perdido.
Mais uma vez, desculpem.


Geovani de Souza

unread,
Jul 7, 2014, 4:23:59 PM7/7/14
to androidb...@googlegroups.com
Matheus, ótima retratação, acredito que ajudou muito!

Volto a bater nessa tecla: Será que seu app realmente precisa dessa funcionalidade? Será que é algo tão vital que vc não quer lancá-lo em um beta sem isso?

Vou dar uma sugestão: Se quer testar o app, disponibilize-o aqui na lista, assim podemos ver e vc pode receber outros feedbacks ou outras ideias que sejam mais "realizáveis" (rs) que essa.

As vezes é preciso dar 1 passo para trás, pra poder dar 2 pra frente... :)

Luis Fernando Junior

unread,
Jul 7, 2014, 4:44:09 PM7/7/14
to androidb...@googlegroups.com

Sim Matheus, não é muito recomendado, mas pelo seu post e desespero, achei que poderia servir :)

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/La5eaGqr8Ws/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Michel Braz de Morais

unread,
Jul 7, 2014, 6:21:25 PM7/7/14
to androidb...@googlegroups.com
Olha Matheus Silva
Que bom que reconheceu que sua "Abordagem" faltou com respeito ao pessoal que participa da lista aqui.
Espero que consiga resolver seu problema.
Eu não tenho conhecimento nesta área pra te ajudar.
Mas o que conheço do pessoal que participa desta lista é que sempre tentam ajudar o pessoal.
Falo com testemunho próprio pois participo de outras listas e de longe esta é a que o pessoal mais ajuda.


att,

Michel Braz de Morais

Analista / Desenvolvedor de sistemas


--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.

Matheus Silva

unread,
Jul 8, 2014, 11:46:21 AM7/8/14
to androidb...@googlegroups.com
Geovani, é um aplicativo de chat, então o teclado vai ser muito usado. Sabe quando você vai digitar uma mensagem pra alguém e decide em algum momento virar o celular pra digitar melhor e ele vira fácil e rápido pronto pra você continuar digitando? É isso que eu quero no meu app :(

Felipe Aron

unread,
Jul 8, 2014, 12:24:29 PM7/8/14
to androidb...@googlegroups.com
Matheus muito bom da tua parte, dar um respaldo sobre todo o ocorrido.

Fiz uma pesquisa rápida na net, e encontrei a solução que procura. Basta no onResume() da activity colocar:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);


Fiz o teste aqui e funcionou de boa.


Em 8 de julho de 2014 12:46, Matheus Silva <informa...@gmail.com> escreveu:
Geovani, é um aplicativo de chat, então o teclado vai ser muito usado. Sabe quando você vai digitar uma mensagem pra alguém e decide em algum momento virar o celular pra digitar melhor e ele vira fácil e rápido pronto pra você continuar digitando? É isso que eu quero no meu app :(

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Geovani de Souza

unread,
Jul 8, 2014, 12:34:48 PM7/8/14
to androidb...@googlegroups.com
Entendi Matheus.

Fiz um teste rápido aqui com os que eu tenho no meu smart: Viber, Hangouts, Zap Zap e Messenger. O único que não manteve o estado do teclado foi o Messenger.

Particularmente não é uma coisa a qual eu tenha dado atenção, contudo, não sou de usar muito esses apps de chat e quando uso, raramente viro a tela...

A sugestão do Felipe Aron pode funcionar. Inclusive, vc pode configurar isso diretamente no AndroidManifest.xml.

Se vc incluir uma tag <requestfocus/> dentro do EditText no layout, o foco e o teclado são abertos assim que a activity/fragment é resumida.

Matheus Silva

unread,
Jul 8, 2014, 1:57:38 PM7/8/14
to androidb...@googlegroups.com
Felipe, dessa maneira o teclado abriria sempre no onCreate(), até ajudaria mas infelizmente não é o feeling que eu quero pro usuário, entende? Até porque se ele estiver em landscape, abrir o teclado vai ocultar bem mais da metade das mensagens listadas, e pode ser que ele esteja querendo ver elas ao inves de digitar, saca?

Uma outra coisa com relação ao problema, percebi que o pessoal cita o ciclo de vida da activity, soh lembrando que eu estou usando fragment. Eh um fragment com uma listview sobre um edittext e a activity apenas gerencia-os por meio da Actionbar usando Actionbar.Tab's. Se for de ajuda eu posso postar todo o arquivo da classe aqui. (Sinceramente to pensando em compartilhar o projeto no Assembla).

Sinceramente eu queria descobrir a raiz do problema porque não é a unica coisa que está estranha com relação à troca de orientação. Como eu já descrevi em um outro post, a recuperação da posição da minha listview também só funciona em um tipo de orientação, na volta não funciona. Isso está triturando a minha cabeça. Vamos ver se a gente descobre junto por favor.
Continuando com os diagnosticos, no problema da listview fiz uma gambiarra pra "resolver" o problema da recuperação da posição. Eu percebi que ele não funcionava no listview.post(), entao tentei um postDelayed() e percebi que ele funciona depois de um determinado delay, mas eu acho que precisava ser grande, tipo mais de 100.
De forma analoga, eu tentei um edittext.postDelayed(). O delay necessario é ainda maior, acho que precisa de mais de 500 mas funciona.
Eu espero muito que essa não seja a unica solução possivel pois além de deselegante vai ficar muito na cara do usuario essa gambiarra.

Queria algo fluido como o aplicativo de mensagens (SMS) do android. Experimentemem abri-lo e rolar a lista para cima, digitar algo e depois rotacionar:
1- A lista de mensagens é recuperada exatamente na mesma posição que estava.
2- A visibilidade do teclado e o estado do edittext continuam exatamente do mesmo jeito.

Mais uma vez obrigado.

Douglas Drumond

unread,
Jul 8, 2014, 11:24:20 PM7/8/14
to androidb...@googlegroups.com
Legal que você se acalmou agora. 

Já que você citou o app de SMS, tentou ver o código? É aberto.


ou veja online em


Pode não dar em nada, mas não custa tentar.


Matheus Silva

unread,
Jul 10, 2014, 11:24:49 AM7/10/14
to androidb...@googlegroups.com
Douglas eu vou dar uma olhada, mas algo lá no fundo me diz que o que está me fodendo é tudo estar dentro de um fragment...
Se eu conseguir liberar o projeto pra todo mundo ver no subversion será que ajuda?

Matheus Silva

unread,
Jul 14, 2014, 1:09:05 AM7/14/14
to androidb...@googlegroups.com
Ta aí todo o projeto pra quem sabe algum herói resolver o problema misterioso.

https://www.assembla.com/code/informatheuspace/subversion/nodes/284/trunk/IRClient3

Mais uma vez obrigado.

Matheus Silva

unread,
Jul 14, 2014, 12:38:25 PM7/14/14
to androidb...@googlegroups.com
Eu dei outro commit, o que fez com que pra acessar o estado atual seja necessario trocar 284 por 285 na url, e não eu não sei usar o git... :(
Pra ser mais especifico, esse fragment onde acontece todo esse problema está aqui:
https://www.assembla.com/code/informatheuspace/subversion/nodes/285/trunk/IRClient3/src/com/example/irclient2/fragment/ChatFragment.java

O unico jeito que eu consegui até agora eh recuperar a posição da lista usando um postDelayed() com 100 de delay e o teclado com 1 segundo pq menos que isso não funciona. Quanto mais eu fuço menos eu entendo esse negocio. Não é o que eu queria neh, da pra perceber a gambiarra.

Lembrando que se eu der outro commit isso vai pra 286. Que merda...
Mais uma vez obrigado.
Reply all
Reply to author
Forward
0 new messages