Я создаю приложение, которое требует ландшафтного / портретного экрана. Моя проблема в том , когда экран вращается , метод не работает даже лесопогрузчик, поэтому у меня возникли проблемы со съемкой. Кто-нибудь, у кого есть опыт же? То, что я получил в журналах после вращения
12-28 00:02:55.897 13039-13039/com.xxx.xxx D/ViewRootImpl: ViewPostImeInputStage processPointer 0
12-28 00:02:55.927 13039-13039/com.xxx.xxx D/ViewRootImpl: ViewPostImeInputStage processPointer 1
Здесь я пытаюсь загрузить другой XML, когда пользователь находится в альбомной или портретной ориентации. Я использую этот метод, потому что у меня есть дополнительные элементы управления в ландшафтном режиме, и эти элементы управления недоступны в портретном режиме. поэтому мне нужно вызвать bindNewControlsLoaded()
метод для инициализации этих элементов управления.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_task_page_lan);
initCreate();
//im calling this because some controls are newly added
bindNewControlsLoaded();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setContentView(R.layout.activity_task_page);
initCreate();
}
}
initCreate
method — это метод портрета, который используется для загрузки общих элементов управления. в то время как дополнительные элементы управления вызываются в bindNewControlsLoaded();
В моем манифесте android:configChanges="orientation|screenSize"
По умолчанию android воссоздать активность на поворот, так что вы можете сделать это без
onConfigurationChanged
вообще просто использовать квалификаторы ресурсов . В вашем случае просто переместитесьactivity_task_page_lan.xml
в res/ layout-land / folder и переименуйте вactivity_task_page.xml
.Но если вы действительно хотите справиться с этим случаем с вашим кодом и предотвратить восстановление активности, вы должны добавить
android:configChanges="orientation"
в объявление активности.