Проблемы ориентации Android 8.1 во фрагменте - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь установить ориентацию одного конкретного фрагмента в ландшафтном режиме.Я добавил setRetainInstance(true); в метод onCreate .

Я добавил getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); в метод onCreateView .

Работает нормально с 7.1и меньшие версии.Но это не работает с 8.1.

Я также попробовал следующие ссылки. Link1 Link2 и многие другие решения.Но эти решения были применимы для деятельности.В моем случае я использую фрагмент.Может ли кто-нибудь помочь мне решить эту проблему?

У меня есть следующий код в моем манифесте.

 <activity
        android:name=".activity.HomeScreen.view.HomeActivity"
        android:label="@string/title_activity_home"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" /> 

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Приведенный выше код, указанный вами в методе onCreateView, работает нормально с фрагментом как в Android 8 Oreo, так и в Android 9 Pie.

Если вы не добавили OnPause () во фрагмент, добавьте

 @Override
 public void onPause() {
  super.onPause();
  getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
  }

Нет необходимости устанавливать setRetainInstance(true); в методе onCreate () для вышеуказанных версий.

Проверьте, не связана ли это с конкретной проблемой телефона, и проверьте, не отключен ли в этом телефоне автоповорот.

0 голосов
/ 26 сентября 2019

В манифесте посмотрите действие, которое содержит фрагмент, и проверьте, есть ли у вас следующая строка:

 android:configChanges="orientation|keyboardHidden|screenSize"

Удалите ее.Это мешает переопределить ландшафтный макет

...