2016-12-27 6 views
0

Я создаю приложение, для которого необходим экран пейзажа/портрет. Моя проблема в том, что когда экран вращается, метод не работает даже с регистратором, поэтому у меня проблемы с трудностями при съемке. Кто имеет такой опыт? Что я получил в журналах после вращенияЖурналы, методы не работают, когда экран вращается.

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 способ представляет собой способ для портрета, это использовать, чтобы загрузить общие элементы управления. в то время как дополнительные элементы управление называется в bindNewControlsLoaded();

В моих манифесте android:configChanges="orientation|screenSize"

+0

Пожалуйста, добавьте журналы с newConfig внутри onConfigurationChanged после супер. И покажите свою декларацию активности. –

ответ

0

По умолчанию андроида воссоздает активности на повороте, так что вы можете сделать это без onConfigurationChanged вообще просто использовать resource qualifiers. В вашем случае просто переместите activity_task_page_lan.xml в папку res/layout-land/folder и переименуйте его в activity_task_page.xml.

Но если вы действительно хотите обработать этот случай своим кодом и предотвратить активный отдых, вы должны добавить android:configChanges="orientation" к декларации о деятельности.

+0

android: configChanges = "orientation | screenSize" У меня уже есть что-то подобное в моем манифесте. Да им обрабатывать это самостоятельно, потому что я загрузил некоторые дополнительные элементы управления в ландшафтном режиме. – jhaypee

+0

Почему вы не хотите просто воссоздавать активность при вращении и записывать условную логику для дополнительных элементов управления в onCreate? –

Смежные вопросы