Esta manhã, tive um problema ao tentar lidar com o onConfigurationChanged
evento. O problema é que o método, que eu substituo, não está sendo chamado quando altero a orientação do telefone. Não sendo chamado.
Eu coloquei android:configChanges="orientation"
a atividade definida no manifesto, como mencionado na documentação do Android, mas isso não faz diferença.
Você veio com esse problema?
android:configChanges
Isto é o que o Google javadoc disse:Note: If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Respostas:
Este foi o meu gremlin para o mesmo problema:
(Em http://developer.android.com/guide/topics/resources/runtime-changes.html )
TL; DR: adicione "| screenSize" a configChanges ao direcionar o nível de API 13+
fonte
+1
do meu lado"screenSize"
era.Alguns dispositivos do 4.0 não chamam onConfigurationChanged. Apenas adicione um ouvinte ao screenSize também.
fonte
onConfigurationChanged
, testarConfiguration.ORIENTATION_LANDSCAPE
e incluir APENASandroid:configChanges="orientation"
no manifesto não foi suficiente para o meu tablet Nexus 7. GraçasO problema era que se você usar esse método
para forçar a orientação do
Activity
modo retrato, você não é candidato a receberorientation
alterações.Portanto, a solução é não
setRequestOrientation
para um modo específico. Mas useSCREEN_ORIENTATION_SENSOR.
fonte
onConfigChanged
também quando o usuário gira o telefone. O mesmo comportamento do aplicativo do youtube. Isso é possível?verifique se o seu dispositivo está com a configuração "Rotação da tela" ativada
fonte
android:screenOrientation
em umActivity
ou em umApplication
nível.android:configChanges="orientation|keyboardHidden"
lugar.fonte
Passei dezenas de minutos para descobrir por que não funcionou. Eu adicionei,
screenSize
mas ainda não funcionou.Acabou que eu adicionei
android:configChanges
ao<application>
elemento, não ao<activity>
elemento como deveria!Bem, é claro, esse foi meu erro, mas todos sabemos que todos nós gastamos muito tempo com esse tipo de erro bobo. Então, eu estou adicionando esta resposta para o caso de haver outro programador bobo como eu.
fonte
Macarse é 100% sobre o dinheiro com sua segunda opção.
Experimentar
android:configChanges="orientation|keyboardHidden|screenSize"
Eu tinha exatamente o mesmo problema e, no emulador 1.6, adicionar
keyboardHidden
causasonConfigurationChanged
a serem chamadas durante a rotação. Remova e ele deixa de ser chamado.fonte
Eu tive o mesmo problema -
onConfigurationChanged
não foi chamado quando o dispositivo mudou de orientação apesar de terandroid:configChanges="orientation|keyboardHidden"
no arquivo de manifesto. Eu usei o trecho de código compartilhado porDeva
aquiorientação não está funcionando no 2.3.3?
para verificar se
onConfigurationChanged
estava sendo chamado. Não era.Após algumas horas de experiência, percebi que tinha as seguintes linhas no arquivo de manifesto
e, ao mudar
android:targetSdkVersion="15"
paraandroid:targetSdkVersion="8"
,onConfigurationChanged
começou a ser chamado. Então, parte do manifesto finalmente ficou assimfonte
attribute: screensize
'? Pode ser útil se mais detalhes forem fornecidos.Acabei de descobrir que se você tiver:
no manifesto, onConfigurationChanged () também não será chamado ...
isso pode ser semelhante a:
essa orientação de configuração bloqueia o onConfigurationChanged ().
fonte
Não use nenhuma versão sdk de destino para torná-lo complicado. e para todos os níveis de API, use isso como ouvinte de alterações na configuração
fonte
Não tenho certeza se este é o melhor lugar para isso, mas ao encontrar esse problema - observei algo interessante.
Se o ouvinte onConfigurationChanged () NÃO estiver funcionando, onCreate () será chamado novamente sempre que a orientação for alterada.
Se o ouvinte onConfigurationChanged () estiver funcionando, esse método será chamado em vez do onCreate () quando a orientação mudar.
fonte
Todas as soluções não funcionam util. Tento remover minha atividade de tema no arquivo de manifesto do Android. Tão estranho
fonte
Nenhuma das sugestões funcionou para mim (eu havia reagido ao projeto nativo com esse problema), mas após horas de depuração, descobri que, se você tiver essa linha no AppTheme of styles.xml
então o aplicativo não girará.
fonte
@ thanhbinh84 Deu-me uma ideia do que poderia estar causando isso.
A remoção
<item name="android:windowIsTranslucent">true</item>
do meu tema no styles.xml o corrigiu!fonte
Eu tive o mesmo problema e tive "android: screenOrientation" e "android: configChanges" especificados no manifesto. Quando removi o primeiro, onConfigurationChanged () é chamado na rotação. Estranho, mas funciona)
fonte
Você recebeu
android.content.res.Configuration
suas declarações de importação? O Eclipse pode inserir importações automaticamente se você pressionarCtrl+Shift+O
.Se estiver faltando, o compilador não poderá reconhecer que você está legitimamente substituindo o método da superclasse e, portanto, gerará um erro.
fonte