Я работаю над приложением для Android, которое имеет различные раскладки для телефона и планшета.На телефоне мой макет игровой активности работает как пользовательский интерфейс с вкладками с 4 вкладками, мы будем называть их A, B, C и D. У меня есть панель кнопок и ViewFlipper с 4 фрагментами.Поэтому, когда они нажимают на вкладку C, ViewFlipper показывает тот дочерний элемент, который является FragmentC.FragmentC содержит ListView.Когда пользователь нажимает на элемент, я хочу показать подробный вид этого элемента.Итак, FragmentC добавляет новый DetailFragment с FragmentTransaction.Этот новый DetailFragment полностью охватывает FragmentC.Я в основном пытаюсь получить тип поведения UINavigationController, если вы знакомы с iOS.Это прекрасно работает на телефоне.
На планшете мой макет игровой активности просто делит экран на 4 равных квадранта с FragmentA, FragmentB, FragmentC и FragmentD.Это, кажется, работает просто отлично, все они отображаются просто отлично.Однако, когда в пользовательском интерфейсе планшета я нажимаю на один из элементов в ListView в FragmentC, выполняется код для добавления нового фрагмента, но на экране ничего не отображается.
Мой телефон gameactivity.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/viewRoot" ...>
<LinearLayout android:id="@+id/tabBarRoot" ...>
<Button ... />
<Button ... />
<Button ... />
<Button ... />
</LinearLayout>
<ViewFlipper android:id="@+id/viewFlipperMainMenu" ...>
<fragment class="FragmentA" ... />
<fragment class="FragmentB" ... />
<fragment class="FragmentC" ... />
<fragment class="FragmentD" ... />
</ViewFlipper>
</RelativeLayout>
Мой планшет gameactivity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewRoot" ... >
<LinearLayout ... >
<fragment class="FragmentB" ... />
<fragment class="FragmentA" ... />
</LinearLayout>
<LinearLayout ... >
<fragment class="FragmentC" ... />
<fragment class="FragmentD" ... />
</LinearLayout>
</LinearLayout>
XML-макет FragmentC для телефона и планшета:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewRoot" ... >
<ListView android:id="@+id/listView" ... />
</LinearLayout>
При нажатии элемента списка в FragmentCFragmentC добавит новый DetailFragment со следующим кодом:
public void pushNewFragment(Fragment fragment, String description) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.viewRoot, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack(description).commit();
}
На телефоне это работает просто отлично, и DetailFragment обнаруживается.На планшете ничего не происходит, когда вызывается метод pushNewFragment ().
Есть идеи?