I need my app to not reload when the orientation changes. I have a regular portrait and a seperate landscape layout that both have the same stuff on the screen. But when I check a checkbox and change layout, it’s no longer checked. Or when a checkbox has the number 5 in it and then change layout it goes back to it’s default number 1. How can I make it stop reloading?
Question posted in Android Studio
The official documentation can be found here.
The official documentation can be found here.
4
Answers
add this following permission for your activity in Manifest file android:configChanges="orientation|screenSize
Something like this
You need to use a way to persist data between the two screens.
Either use savedInstanceState or ViewModel.
First tip from Philipp Lackner explains how to use the savedStateHandle
https://www.youtube.com/watch?v=0d5ax97Mb30
The state when you change orientation, for example, gets restored, so you need to handle via viewmodel the state persistence.
The checked state of a CheckBox and text in an EditText will be automatically preserved if you make sure they have the same
id
in both layouts. However, it only automatically preserves the things that can be changed through the UI, so if you programmatically changed the text of a CheckBox, that is not automatically preserved. Typically, that sort of thing is handled with a ViewModel and LiveData/Flow.This behavior is controlled by the
saveEnabled
property of a view, which is true by default.