Использование android: configChanges = "direction | screenSize" /> И это портит мой ландшафтный макет при изменении ориентации - PullRequest
0 голосов
/ 13 декабря 2018

Когда я вставляю

activity android:name=".MainActivity" 
android:configChanges="orientation|screenSize" 

и выполняю это для каждого из моих действий, макет, когда я переворачиваю ориентацию в эмуляторе, не соответствует тому, как я сделал это в режиме дизайна.

Раньше, когда у меня не было configChanges, он работал бы просто отлично, за исключением того, что если я проигрывал аудио, он продолжал бы играть, и у меня не было бы способа приостановить звук, который воспроизводился, когда я впервыеначал это.

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

Вот так выглядит мой код в моем Manifest.xml файле для configChanges:

<activity android:name=".MainActivity" 
android:configChanges="orientation|screenSize"/>
    <activity android:name=".Listen" 
android:configChanges="orientation|screenSize"/>
    <activity android:name=".See" 
android:configChanges="orientation|screenSize"/>
    <activity android:name=".Study" 
android:configChanges="orientation|screenSize" />

1 Ответ

0 голосов
/ 13 декабря 2018

Несмотря на то, что Интернет говорит вам, вы должны никогда * использовать атрибут android:configChanges для подавления нормального жизненного цикла действий Android.Вместо этого вы должны работать внутри системы, как обычно.

Из собственной документации Google :

Примечание: Следует избегать использования этого атрибута и использовать его только в качестве крайней меры.Пожалуйста, прочитайте Обработка изменений времени выполнения для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации.


В вашем случае это означает решение другой проблемы, которую выупомянуто:

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

IРекомендую открыть новый вопрос с подробной информацией о том, как вы запускаете / останавливаете воспроизводимое аудио, и с информацией о том, в чем именно заключается «проблема».Я подозреваю , что правильный способ справиться с этим - переместить обработку звука в сохраненный фрагмент , но сейчас я ничего не могу сделать, кроме предположения.

...