Android Пейзаж в портрет не загружает экраны при изменении ориентации

Я создал макеты для больших экранов как для портретной, так и для альбомной ориентации, и у меня есть signin.xml в обоих макетах, но когда я меняю ориентацию экрана, он не загружает ландшафтный xml, вместо этого он переходит в ландшафтный режим, но портретный xml был загружен. Я также упомянул изменения onconfig в манифесте, и, пожалуйста, дайте мне знать, как сохранить данные при изменении ориентации, и, пожалуйста, покажите мне какой-нибудь пример.

Ниже мой код Java

              public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);

               Display display = ((WindowManager)       getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
            int   orientation = display.getOrientation(); 
            boolean oAllow = false;
            switch(orientation) {
            case Configuration.ORIENTATION_PORTRAIT:
            if(!oAllow ) {
                    setRequestedOrientation    (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

            }
            break;
        case Configuration.ORIENTATION_LANDSCAPE:
            if(!oAllow) {
                    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
            break;
    }
      }

Как я могу получить свой альбомный вид, когда я меняю альбомный режим на портретный на альбомный?

Пожалуйста, любые предложения? Заранее спасибо


person Nikhil Virupakshi    schedule 22.05.2012    source источник
comment
Я думаю, вам действительно нужно прочитать документ разработчика. Вы должны только определить файл макета для другой папки ресурсов.   -  person Changwei Yao    schedule 22.05.2012
comment
я добавил sigin.xml как в layout-land, так и в layout-portrait   -  person Nikhil Virupakshi    schedule 22.05.2012
comment
поэтому удалите код onConfigurationChanged().   -  person Changwei Yao    schedule 22.05.2012


Ответы (2)


Является ли ваша портретная xml-папка макетом или макетом-портретом? Если его макет-портрет, пожалуйста, не объявляйте его таким. Просто создайте папку «макет» по умолчанию, ОС будет получать xml, когда ориентация портретная.

Затем прокомментируйте приведенный выше код в java и объявите в androidmanifest.xml android:configChanges="keyboardHidden|orientation" перед объявлением вашей активности и проверьте, работает ли он.

person Rashmi.B    schedule 22.05.2012
comment
я разрабатываю их для планшета, я создал два layout-large-land - person Nikhil Virupakshi; 22.05.2012
comment
чувак, тогда для планшета у тебя должен быть layout-large (portait) и layout-large-land для альбомной ориентации. Внесите поправку. или Попробуйте layout-xlarge (портриат) и layout-xlarge-land (пейзаж) - person Rashmi.B; 22.05.2012
comment
большое спасибо, теперь все работает нормально .... но я хочу знать, как я могу сохранить свои данные списка. - person Nikhil Virupakshi; 22.05.2012
comment
Была похожая проблема, исправление заключалось в том, чтобы удалить screenSize из android:configChanges в моем манифесте. По какой-то причине это применялось по умолчанию, когда я создавал свои действия: android:configChanges=keyboardHidden|orientation|screenSize, изменив его на: android:configChanges=keyboardHidden|ориентация. Проблема решена. - person Sverrir Sigmundarson; 20.04.2013

почему именно вы переопределяете onconfigchanges? Это может испортить ваш макет. Android может обрабатывать изменения макета, когда у вас есть макет и папка layout-land, содержащая ваши макеты.

person Wottah    schedule 22.05.2012
comment
так что вы говорите, что нужно удалить изменения onconfig, но он все равно не загружает экран при изменении ориентации ... он загружает тот же экран в ландшафтном режиме - person Nikhil Virupakshi; 22.05.2012
comment
что если убрать -portrait? просто оставьте папку layout и layout-land? где-то что-то пошло не так... Android должен обрабатывать это автоматически - person Wottah; 22.05.2012
comment
большое спасибо, теперь все работает нормально .... но я хочу знать, как я могу сохранить свои данные списка. - person Nikhil Virupakshi; 22.05.2012
comment
я рекомендую хранить ваши данные в службе и вызывать метод для заполнения вашей таблицы в вашем методе onStart(). - person Wottah; 22.05.2012