我正在开发带有片段的典型平板电脑应用程序:左侧的元素列表和右侧的内容。对于智能手机版本,我只展示了一个带有元素列表的片段,对于平板电脑,我展示了 2 个带有列表和内容的片段。
为了处理屏幕旋转,我正在处理我的应用程序的旋转。当用户旋转屏幕并且我在右侧显示图像或一些文本时,我会全屏显示:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i(TAG, "onConfigurationChanged");
if(MainFragmentActivity.isTablet)
{
FragmentManager fm = getSupportFragmentManager();
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE && !frameTabs.isShown()) //Show again the tabs fragment
{
Utils.goNormalScreen(this);
frameTabs.setVisibility(View.VISIBLE);
}
else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT && (fm.findFragmentByTag(Utils.SHOW_IMAGE_TAG) != null || fm.findFragmentByTag(Utils.SHOW_TEXT_TAG) != null
|| fm.findFragmentByTag(Utils.SHOW_WEB_TAG) != null)) //Hide tabs fragment
{
Log.i(TAG, "Detected showing image");
Utils.goFullScreen(this);
frameTabs.setVisibility(View.GONE);
}
}
}
问题是 7 英寸平板电脑:在纵向模式下,我想显示智能手机版本(1 个带有列表的片段),在横向模式下,我想显示带有 2 个片段的平板电脑版本。
所以在 onConfigurationChanged() 中我需要检测 7 英寸平板电脑并重新创建活动以更改布局,不是吗?怎么做?还有其他更好的方法可以让它工作吗?
我应该重新创建从服务器(ListView)再次获取所有数据的活动,还是将数据保存在捆绑包中并在旋转时重用它?