1. Fragment 的生命周期:
- Fragment 有自己的生命周期,与 Activity 的生命周期类似。主要包括以下方法:
- onAttach(): 当 Fragment 被附加到 Activity 时调用。
- onCreate(): 在创建 Fragment 时调用。
- onCreateView(): 创建并返回 Fragment 的视图层次结构。
- onActivityCreated(): 当与 Fragment 关联的 Activity 的 onCreate() 完成时调用。
- onStart(), onResume(): Fragment 可见时调用。
- onPause(), onStop(): Fragment 不可见时调用。
- onDestroyView(), onDestroy(), onDetach(): 在销毁 Fragment 时调用。
2. Fragment 的创建和使用:
- 创建 Fragment 通常需要继承自 Fragment 类,并实现生命周期方法和视图的创建。
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 在此方法中创建并返回 Fragment 的视图层次结构
View view = inflater.inflate(R.layout.fragment_layout, container, false);
return view;
}
}
在 Activity 中使用 Fragment:
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
// 在布局中定义的 Fragment 占位符
MyFragment myFragment = new MyFragment();
// 使用 FragmentTransaction 添加 Fragment 到 Activity
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, myFragment)
.commit();
}
}
3. Fragment 的通信:
- Fragment 之间可以通过它们所关联的 Activity 进行通信,也可以通过接口回调实现直接通信。
// 在 Fragment 中定义接口
public interface OnFragmentInteractionListener {
void onInteraction();
}
// 在 Activity 中实现接口
public class MyActivity extends AppCompatActivity implements MyFragment.OnFragmentInteractionListener {
@Override
public void onInteraction() {
// 处理 Fragment 与 Activity 之间的交互
}
}
4. Fragment 的回退栈:
- 将 Fragment 添加到回退栈中,可以在用户按返回按钮时回退到上一个 Fragment。
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new MyFragment());
transaction.addToBackStack(null);
transaction.commit();
5. 动态加载和替换 Fragment:
- 在运行时可以动态地加载和替换 Fragment。
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new AnotherFragment());
transaction.addToBackStack(null);
transaction.commit();
6. Fragment 的保存和恢复状态:
- Fragment 可以通过 onSaveInstanceState() 保存状态,通过 onActivityCreated() 恢复状态。
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("key", "value");
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
String value = savedInstanceState.getString("key");
// 恢复状态
}
}
以上是关于 Fragment 的基本概述。Fragment 是 Android 开发中非常重要的组件,它提供了一种灵活的方式来管理和组织用户界面。在大多数应用中,使用 Fragment 可以更好地适应不同屏幕尺寸和设备方向的变化。
转载请注明出处:http://www.zyzy.cn/article/detail/15181/Android