参考文档: android developer training basics
1. 一个activity可以用若干个fagment组成,用fragment组成的好处是可以适用各种类型的屏幕。典型例子是平板和手机:
生成一个fragment步骤:
单独用xml声明一个fragment, 可以是一个FrameLayout,也可以是一个TextView
创建一个Fragment子类,重写onCreateView
声明一个fragment的layout, 放在目录res/layout下
onCreateView有一个参数,让Fragment子类绑定到layout资源
如何将fragment装入activity,在Activity::onCreate()里, 创建Fragment类:
最后一行代表将这个fragment装入activity指定的fragment layout里
// Create an instance of ExampleFragment
HeadlinesFragment firstFragment = new HeadlinesFragment();
// In case this activity was started with special instructions from an Intent,
// pass the Intent's extras to the fragment as arguments
firstFragment.setArguments(getIntent().getExtras());
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
在activity里也可以通过xml静态嵌入一个fragment:
在android:name里指定实现的Fragment类
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_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" />
/LinearLayout>
在fragment attach到activity的时候,会调用Fragment::onAttach(acitivity),重载这个函数可以实现Fragment和Activity直接的关联操作。常用的方法是让activity作为fragment的listener:
让activity实现这个listener接口
在重载的Fragment::onAttach(activity)里,保存这个listener
在fragment定义该fragment的listener接口:
public void onAttach(activity) {
mCallback = (OnMyFragmentListener)activity;
}
class MyFragment extends Fragment {
public interface OnMyFragmentListener {
public void onMyButtonClicked();
}
}