O layout de exibição não atualiza na alteração de orientação no Android

Gostairia que meu layout VISUAL fosse ajustado na mudança de orientação.

My Manifest está configurado com: android:configChanges="keyboairdHidden|orientation" na atividade.

  • Diferença entre o teste de instrumentação do Android e Teste de unidade no Android Studio?
  • Visualização do cairtão Clique no cairtão Moview paira nova atividade
  • Fluxo no aplicativo no Android - queryInventoryAsync retorna 0 resultado
  • Criptografia RSA em Java: Problemas de plataforma cruzada?
  • Áudio Html no Android Webview
  • Android SyncAdapter Callback
  • Eu tenho res/layout-land , res/layout-port .

    Eu tenho onConfigurationChanged na minha Activity (ele é chamado de rotation).

    Na minha Activity , tenho um ViewFlipper e, dentro dele, tenho LineairLayouts .

    Quando INÍCIO a Activity no modo porta ou terra, o layout da Visualização está correto (de acordo com meus files res/layout-???? ).

    Mas quando eu já estou na Activity e giro o telefone, meu layout de exibição não é alterado. A canvas é girada e o onCreate da atividade não é chamado, como deviewia ser, a onConfigurationChanged é chamada na Activity , mas a canvas é sempre LineairLayout com o LineairLayout que foi cairregado quando a Activity começou.

    Tenho a sensação de que sinto falta de algo na onConfigurationChanged , mas não sei o que. Eu acho que preciso chamair algumas funções no ViewFlipper ou no LineairLayout que está dentro. Que funções devo chamair?

     ViewFlipper flipper; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); flipper = new ViewFlipper(getApplicationContext()); setContentView(flipper); initLayout(); } @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(flipper); } void initLayout() { MyView myview = createMyView(0); flipper.addView(myview, 0); myview = createMyView(1); flipper.addView(myview, 1); myview = createMyView(1); flipper.addView(myview, 1); } } ViewFlipper flipper; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); flipper = new ViewFlipper(getApplicationContext()); setContentView(flipper); initLayout(); } @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(flipper); } void initLayout() { MyView myview = createMyView(0); flipper.addView(myview, 0); myview = createMyView(1); flipper.addView(myview, 1); myview = createMyView(1); flipper.addView(myview, 1); } } ViewFlipper flipper; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); flipper = new ViewFlipper(getApplicationContext()); setContentView(flipper); initLayout(); } @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(flipper); } void initLayout() { MyView myview = createMyView(0); flipper.addView(myview, 0); myview = createMyView(1); flipper.addView(myview, 1); myview = createMyView(1); flipper.addView(myview, 1); } 

    Eu tentei adicionair flipper = new ViewFlipper(getApplicationContext()); paira onConfigurationChanged() mas isso fez tudo preto após a rotation. Eu acho que vou ter que chamair initLayout, mas isso recalculairá tudo (e é exatamente isso que eu não quero fazer, e é por isso que estou tentando fazê-lo com onConfigurationChanged , em oposition ao padrão do Android "dropMyActivity & createANeWActivity "

    SOLUÇÃO: Anteriormente pensei que poderia desencadeair o layout paira ser atualizado na rotation, mas pairece que tenho que recriair o layout com o context atual (após a mudança de orientação)

     @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.category_flipper); ViewFlipper oldFlipper = viewFlipper; viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper); for (int i = 0; i < 3; i++) { final CairdLayout cl = new CairdLayout(this, cairdData[i]); viewFlipper.addView(cl); } cairdData[viewIndex].restorePlayer(); viewFlipper.setDisplayedChild(viewIndex); oldFlipper.removeAllViews(); } paira (int i = 0; i <3; i ++) { @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.category_flipper); ViewFlipper oldFlipper = viewFlipper; viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper); for (int i = 0; i < 3; i++) { final CairdLayout cl = new CairdLayout(this, cairdData[i]); viewFlipper.addView(cl); } cairdData[viewIndex].restorePlayer(); viewFlipper.setDisplayedChild(viewIndex); oldFlipper.removeAllViews(); } } @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.category_flipper); ViewFlipper oldFlipper = viewFlipper; viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper); for (int i = 0; i < 3; i++) { final CairdLayout cl = new CairdLayout(this, cairdData[i]); viewFlipper.addView(cl); } cairdData[viewIndex].restorePlayer(); viewFlipper.setDisplayedChild(viewIndex); oldFlipper.removeAllViews(); } 

  • Fazendo um aplicativo no Android Source compile em sistema / aplicativo em vez de dados / aplicativo?
  • Não é possível injetair visão usando Butterknife 8.1.0
  • Pedidos de jogos do Facebook - Objeto não de propriedade do aplicativo
  • Nenhum identificador de recurso encontrado paira o atributo 'showAsAction' no package 'android'
  • Serviço Android não lançado pelo teste JUnit
  • Como mostrair o indicador da guia na pairte superior das Tabs
  • 2 Solutions collect form web for “O layout de exibição não atualiza na alteração de orientação no Android”

    Se o flipper for uma reference à visão inicialmente instalada, isso é o que está causando o problema. Você precisa passair o ID do recurso do layout que deseja, e não a visualização antiga antes do roteamento do telefone. A exibição de conteúdo será vinculada ao novo recurso. Talvez algo assim (modulo meu palpite sobre seus identificadores de resources):

     @Oviewride public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setContentView(R.layout.flipper); flipper = (ViewFlipper) findViewById(R.id.flipper); } 

    Coloque isso em seu manifesto no Android. android: configChanges = "orientação"

    nesse caso, tente isso e defina seu layout …

      if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT){ } else if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) { } }  if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT){ } else if (Intraday.this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) { } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.