This one is tricky because I totally was lost until I luckily came across a forum post that explained how Android works behind the scenes during orientation change.

So my Android widget has two layouts, one visible and one hidden. The visible layout is default while the hidden layout will only be shown if data is present.

When orientation change happens (portrait, landscape), the problem is that the hidden layout which I programmaticaly set to visible is not shown.

Use Jona from Stack Overflow mentioned this important note that solved my problem.

“When the screen is rotated and the widget needs to be restored the Android system will restore it using the data from the last RemoteViews update. I was updating parts of the widget separately so when it needed to restore only one part got updated. The fix is always update everything on your RemoteViews all at once.”

So that is the solution. Whenever you instantiate and inflate RemoteViews, be sure that you also set the View states on everything.

The JTree class does not have a means to save a tree node’s state (e.g. expanded of collapsed). I did come across a forum where a post mentioned about the use of a TreeExpansionListener to save a tree node’s state and provided a short sample snippet. I modified some minor bugs and the code below is the finished and modified code.

Say you want to add a new tree node, you do not want the JTree to refresh all its tree nodes’ expanded state to collapsed. Rather, the previous state will still be the same even when a new tree node is added to the JTree. You can call the method jTree1.restoreExpansionState() to restore it and jTree1.resetExpansionState() to reset all the state to collapsed.

Related Posts Plugin for WordPress, Blogger...