编写:fastcome1985 - 原文:http://developer.android.com/training/basics/fragments/creating.html
Note: 如果的你的APP的最低API版本是11或以上,你不必使用Support Library,你可以直接使用API框架里面的Fragment,这节课主要是讲基于Support Library的API,Support Library有一个特殊的包名,有时候与平台版本的API名字有些轻微的不一样。
创建一个fragment,首先需要继承Fragment类,然后在关键的生命周期方法中插入你APP的逻辑,就像activity一样。
其中一个区别是当你创建Fragment的时候,你必须重写onCreateView()回调方法来定义你的布局。事实上,这是使Fragment运行起来,唯一一个需要你重写的回调方法。比如,下面是一个自定义布局的示例fragment.
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;
public class ArticleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.article_view, container, false);
}
}
更多关于fragment的声明周期和回调方法,详见Fragments developer guide.
Notes:FragmentActivity是Support Library提供的一个特殊activity ,用来在API11版本以下的系统上处理fragment。如果你APP中的最低版本大于等于11,你可以使用普通的Activity。
large
字符来区分)时,它在布局中增加了两个fragment.res/layout-large/news_articles.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
Notes:更多关于不同屏幕尺寸创建不同布局的信息,请阅读Supporting Different Screen Sizes
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_articles);
}
}
Note:当你用XML布局文件的方式将Fragment添加进activity时,你的Fragment是不能被动态移除的。如果你想要在用户交互的时候把fragment切入与切出,你必须在activity启动后,再将fragment添加进activity。这将在下节课讲到。