Problems when switching ListView ChoiceMode on screen rotation
<p>I am trying to build a split pane based on the <a href="http://developer.android.com/guide/topics/fundamentals/fragments.html#Example" rel="nofollow">example code</a> provided at the end of the Android documentation about Fragments, basically a LinearLayout containing two fragments (all the details can be found in the above link):</p>

<ul>
<li><code>TitlesFragment</code> to display a list of titles</li>
<li><code>DetailsFragment</code> to display the details of the currently selected title</li>
</ul>

<p>My problem is that the following unexpected behavior happens:</p>

<ol>
<li>I start the application in <strong>Landscape</strong> orientation: the titles list is displayed on the left and the details of the currently selected title (the first one at the beginning) are displayed on the right.</li>
<li>I select <strong>item X</strong> from the titles list: the title becomes highlighted since the ListView is set to <code>CHOICE_MODE_SINGLE</code> and its items implement the <code>Checkable</code> interface.</li>
<li>I switch to <strong>Portrait</strong> orientation (by rotating the device or emulator): as expected, only the titles list is shown and no item is selected in this configuration, because the ListView gets recreated and, by default, it is set to <code>CHOICE_MODE_NONE</code>.</li>
<li>I select <strong>item Y</strong> from the titles list: as expected, an activity showing only the <code>DetailsFragment</code> corresponding to the selection made is shown.</li>
<li>I switch back to <strong>Landscape</strong> orientation (here's where the unexpected behavior happens): the <code>DetailsFragment</code>on the right correctly shows the details of <strong>item Y</strong> (which was selected in portrait orientation) but the <code>TitlesFragment</code> still shows <strong>item X</strong> as selected (i.e. the one which was selected BEFORE the first screen rotation).</li>
</ol>

<p>Of course, I would like that the last selection made in Portrait orientation was correctly shown also within the <code>TitlesFragment</code>, otherwise I end up with an inconsistent highlighting which shows item X as selected while displaying the details of item Y. </p>

<p>I post the relevant code where the ListView mode is changed (within 'onActivityCreated') and the selected item is set (within the 'showDetails' method):</p>

<pre class="lang-java prettyprint-override"><code>public static class TitlesFragment extends ListFragment {
boolean mDualPane;
int mCurCheckPosition = 0;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Populate list with our static array of titles.
    setListAdapter(new ArrayAdapter&lt;String&gt;(getActivity(),
            android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

    // Check to see if we have a frame in which to embed the details
    // fragment directly in the containing UI.
    View detailsFrame = getActivity().findViewById(R.id.details);
    mDualPane = detailsFrame != null &amp;&amp; detailsFrame.getVisibility() == View.VISIBLE;

    if (savedInstanceState != null) {
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }

    if (mDualPane) {
        // In dual-pane mode, the list view highlights the selected item.
        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        // Make sure our UI is in the correct state.
        showDetails(mCurCheckPosition);
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    showDetails(position);
}

/**
 * Helper function to show the details of a selected item, either by
 * displaying a fragment in-place in the current UI, or starting a
 * whole new activity in which it is displayed.
 */
void showDetails(int index) {
    mCurCheckPosition = index;

    if (mDualPane) {
        // We can display everything in-place with fragments, so update
        // the list to highlight the selected item and show the data.
        getListView().setItemChecked(index, true);

        // Check what fragment is currently shown, replace if needed.
        DetailsFragment details = (DetailsFragment)
                getFragmentManager().findFragmentById(R.id.details);
        if (details == null || details.getShownIndex() != index) {
            // Make new fragment to show this selection.
            details = DetailsFragment.newInstance(index);

            // Execute a transaction, replacing any existing fragment
            // with this one inside the frame.
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.details, details);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.commit();
        }

    } else {
        // Otherwise we need to launch a new activity to display
        // the dialog fragment with selected text.
        Intent intent = new Intent();
        intent.setClass(getActivity(), DetailsActivity.class);
        intent.putExtra("index", index);
        startActivity(intent);
    }
}
</code></pre>

<p>Does anyone have an idea about how to solve such issue?
Thanks in advance.</p>
