【发布时间】:2023-03-20 06:18:01
【问题描述】:
我正在处理一个 Android 项目,但遇到了两窗格布局(列表 + 详细信息)的问题。
当前状态:
- 适用于宽度大于 600dp 和横向的屏幕的双窗格布局(如在 GMail-App 中)。
- 从两窗格切换到单窗格布局有效
- 适用于在任何方向上宽度小于 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 应用程序。
【问题讨论】:
标签: android android-layout android-fragments