【发布时间】:2012-02-27 21:20:45
【问题描述】:
我正在开发一个 Android 应用程序,该应用程序具有不同的手机和平板电脑布局。在手机上,我的游戏活动布局作为带有 4 个选项卡的选项卡式 UI,我们将它们称为 A、B、C 和 D。我有一个按钮选项卡栏和一个 ViewFlipper,其中包含 4 个片段。因此,当他们点击 C 选项卡时,ViewFlipper 会显示该子项,即 FragmentC。 FragmentC 包含一个 ListView。当用户点击一个项目时,我想显示有关该项目的详细视图。因此,FragmentC 添加了一个带有 FragmentTransaction 的新 DetailFragment。这个新的 DetailFragment 完全覆盖了 FragmentC。如果您熟悉 iOS,我基本上是在尝试获得 UINavigationController 类型的行为。这在手机上运行良好。
在平板电脑上,我的游戏活动布局只是将屏幕分成 4 个相等的象限,分别是 FragmentA、FragmentB、FragmentC 和 FragmentD。这似乎工作得很好,它们都显示得很好。但是,在平板电脑 UI 上,如果我在 FragmentC 的 ListView 中点击其中一项,则会执行代码以添加新片段,但屏幕上没有显示任何内容。
我的手机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>
FragmentC 的手机和平板的布局 xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewRoot" ... >
<ListView android:id="@+id/listView" ... />
</LinearLayout>
当FragmentC中的List项被点击时,FragmentC会添加一个新的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() 方法时没有任何明显的变化。
有什么想法吗?
【问题讨论】:
标签: android-fragments android android-tabs