Я пишу приложение, которое будет выглядеть как gmail.На самом деле я хочу, чтобы на экране были активны 2 панели, как в приложении Honeycomb Gmail.
Мой основной макет:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="org.bicou.newsreader.SubscriptionsList"
android:id="@+id/fragment_left_list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<FrameLayout android:id="@+id/fragment_middle_content" android:layout_weight="3"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
<FrameLayout android:id="@+id/fragment_right_content" android:layout_weight="8"
android:visibility="gone"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
</LinearLayout>
Фрагмент SubscriptionsList
при загрузке,заполняет fragment_middle_content
framelayout другим фрагментом.
Когда я что-то делаю во втором фрагменте, я хочу:
- hide
fragment_left_list
- put
fragment_middle_content
влево - показать
fragment_right_content
с 3-м фрагментом.
Однако я не знаю, как это сделать.Как и в приведенном выше макете XML, вы можете видеть, что макет 3-го кадра скрыт (видимость == исчезла).Поэтому, когда я что-то делаю во втором фрагменте, у меня есть:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// Hide the left pane
SubscriptionsList sl = (SubscriptionsList) fm.findFragmentById(R.id.fragment_left_list);
ft.hide(sl);
// Show the right pane
OneItem oi = OneItem.newInstance(mEntries.get(position));
ft.replace(R.id.fragment_right_content, oi);
ft.show(oi);
getActivity().findViewById(R.id.fragment_right_content).setVisibility(View.VISIBLE);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
Это работает один раз.Когда я возвращаюсь назад, стек назад восстанавливает транзакции фрагментов, но не скрывает третий фрагмент.
Я знаю, что у меня нет правильного подхода, но я еще не знаком с API программирования 3.0.