android在3.0版本后引入了fragment,主要是为了针对手机和平台实现更加灵活的界面实现,例如在在手机端需要两个activity展示的界面,在pad端只需要一屏,那么将这两个activity所承载的内容涉及为两个fragment,并由activity控制则会灵活的多。同时,fragment之间的切换也会比activity之间具备更好的性能。
fragment的生命周期是依赖于activity的,它并不可以独立出现,在activity的oncreate方法调用后,才会调用其自身的onCreate,onCreateView等。
下文给出一个fragment静态实现的例子:
- 定义一个fragment类:
public class Demo1Fragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_demo1, container, false); } }
- 为该fragment定义一个layout文件,同activity;
- 在activity的layout中引用该fragment,如自定义控件;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <fragment android:id="@+id/fragment1" android:name="com.example.fragment01.Demo1Fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="72dp" /> <fragment android:id="@+id/fragment2" android:name="com.example.fragment01.Demo1Fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/fragment1" android:layout_alignParentBottom="true" android:layout_marginBottom="102dp" /> </RelativeLayout>
- activity必须继承FragmentActivity
public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
运行后,上述两个fragment会在activity启动时被创建。
时间: 2024-10-12 09:26:29