I have the following problem:
I have a TabActivity
that shows a FragmentActivity
in one of its tabs.
That FragmentActivity
adds a ListFragment
, when clicked on the item of that ListFragment
, a Fragment is added (also to the backstack) and displayed.
Now I need to change the layout of that Fragment
to change when going to landscape orientation.
But I'm totally clueless where to implement that change. I have already created to correct layout in the layout-land folder. But where is the correct point to set it?
Warning: this may be a pre-Lollipop answer.
A
Fragment
doesn't get re-inflated on configuration change, but you can achieve the effect as follows by creating it with aFrameLayout
and (re)populating that manually:I'm not particularly happy with the
getActivity()
and related calls here, but I don't think there's another way to get hold of those things.Update: Removed cast of
ViewGroup
toFrameLayout
and usedLayoutInflater.from()
, and the third parameter ofinflate()
instead of adding the view explicitly.I believe that if you have layouts that are for specific device orientations then all you need do is give them the same name but place them in the appropriate resource directory. This link gives some explanation. The Android system then takes care of selecting the appropriate resource but you can handle this yourself if needs be.