Android 单窗格到双窗格

Android 单窗格到双窗格,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我正在从事一个Android项目,但在双窗格布局列表+详细信息方面遇到了问题 当前状态: 对于宽度大于600dp的屏幕和横向屏幕,使用GMail应用程序中的双窗格布局。 从双窗格切换到单窗格布局非常有效 适用于任何方向宽度小于600dp的设备的工作单窗格布局。 问题: 如果用户设备屏幕宽度大于600dp处于纵向模式,并选择列表项,则会弹出正确的详细视图。如果用户现在将方向更改为横向,则布局应更改为带有列表和选定局部视图的双窗格布局。但应用程序仍停留在单窗格布局中 在我看来,这个问题是因为我在单窗

我正在从事一个Android项目,但在双窗格布局列表+详细信息方面遇到了问题

当前状态:

对于宽度大于600dp的屏幕和横向屏幕,使用GMail应用程序中的双窗格布局。 从双窗格切换到单窗格布局非常有效 适用于任何方向宽度小于600dp的设备的工作单窗格布局。 问题:

如果用户设备屏幕宽度大于600dp处于纵向模式,并选择列表项,则会弹出正确的详细视图。如果用户现在将方向更改为横向,则布局应更改为带有列表和选定局部视图的双窗格布局。但应用程序仍停留在单窗格布局中

在我看来,这个问题是因为我在单窗格模式下启动了一个新的活动,而不是交换一些片段。但我真的不知道如何做到这一点

下面的代码显示了如果用户选择列表项会发生什么

@Override
public void onItemSelected(AndroidCalendar calendar) {
    if (mTwoPane) {
        // two-pane mode
        Bundle arguments = new Bundle();
        arguments.putSerializable(CalendarDetailFragment.CALENDAR, calendar);
        CalendarDetailFragment fragment = new CalendarDetailFragment();
        fragment.setArguments(arguments);
        getFragmentManager().beginTransaction()
                .replace(R.id.calendaritem_detail_container, fragment)
                .commit();

    } else {
        // single-pane mode
        Intent detailIntent = new Intent(this, CalendarDetailActivity.class);
        detailIntent.putExtra(CalendarDetailFragment.CALENDAR, calendar);
        startActivity(detailIntent);
    }

例如,Boxer应用程序EMail和gReader支持此行为。我认为GMail应用程序也是如此。

你可以通过使用应用程序的导航抽屉方案来实现你想要的行为。由于布局的最后两个部分抽屉和细节都是片段,因此您可以使用一个布局,就像正常的导航抽屉一样,在其中来回滑动。然后在平板电脑布局中,使碎片不会滑动,而是永久可见。在您的主要活动中,您可以实现逻辑来查看屏幕大小并推断它是否是平板电脑。然后,您将拥有一个动态布局,而无需创建不同的活动

我还想看看导游