如果屏幕可用空间不支持查看与其他碎片并排显示的碎片, 则需要启动一个独立的Activity来显示界面,
接着前面对Fragment的介绍,在showDetails() 方法, 它用于屏幕为竖屏并且细节碎片无法在标题碎片所在的页面上正常显示时, 就必须实现细节活动DetailActivity
当屏幕为竖屏时, 在这个DetailActivity 设置一个新细节碎片, 为界面提供内容, 这就是在 DetailActivity类 创建DetailFragment 的原因!
DetailsActivity 一个有意思方面是: 从不使用setContentView()设置视图, 其界面是这样创建的: 碎片事务调用add(), 添加碎片的视图容器被 指定为资源android.R.id.content, 这是Activity 的顶级组件容器,因此当将碎片视图添加到此顶级容器时,碎片视图结构将成为活动的唯一的视图, 即碎片会在这个活动内显示
代码如下 :
public class DetailsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE) {
/* 如果当前是横屏,这表示MainActivity 曾带标题和文本显示过,
* 所以activity 不再需要,需保证让 MainActivity 完成所有工作
*/
finish();
return;
}
if(getIntent() != null) {
// 这是初始化详情 碎片的另一种方式
DetailsFragment d = DetailsFragment.newInstance(getIntent().getExtras());
// 开启Fragment 事务,并增加,提交
getFragmentManager().beginTransaction().add(android.R.id.content, d).commit();
}
}
}