Fragment 是 Google 在 Android 3.0 推出的轻量级的 Activity , 使用时不需要在清单文件中注册,运行效率更高。下面介绍一个简单的示例。
1 创建 HomeFragment
public class HomeFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Toast.makeText(getActivity(), "onCreateView", Toast.LENGTH_SHORT).show();
View v = inflater.inflate(R.layout.fragment_home, null);
return v;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Toast.makeText(getActivity(), "onCreate", Toast.LENGTH_SHORT).show();
super.onCreate(savedInstanceState);
}
@Override
public void onStart() {
Toast.makeText(getActivity(), "onStart", Toast.LENGTH_SHORT).show();
super.onStart();
}
@Override
public void onResume() {
Toast.makeText(getActivity(), "onResume", Toast.LENGTH_SHORT).show();
super.onResume();
}
@Override
public void onPause() {
Toast.makeText(getActivity(), "onPause", Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
public void onDestroy() {
Toast.makeText(getActivity(), "onDestroy", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
2 在 MainActivity 中使用
FragmentManager fm;
FragmentTransaction transaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm = getFragmentManager();
}
public void home(View view) {
HomeFragment homeFragment = new HomeFragment();
transaction = fm.beginTransaction();
FragmentTransaction replace = transaction.replace(R.id.container, homeFragment);
transaction.commit();
}
使用 Fragment 时,transaction 和 commit 是一一对应的关系。Fragment 的生命周期和
Activity 类似,不同点是其 onCreate 方法后会执行 onCreateView 方法。
Fragment 可以使用 Activity 中的控件,通过 getActivity 方法可以获取 Activity 对象。
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_mine,null);
final EditText et = getActivity().findViewById(R.id.et_tip);
TextView tv_tip = v.findViewById(R.id.getTip);
tv_tip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tipStr = et.getText().toString().trim();
Toast.makeText(getActivity(), tipStr, Toast.LENGTH_SHORT).show();
}
});
return v;
}
通过Fragment 可以轻松实现在一个Activity 中页面的切换,我们平常所见的 Android 端 App 大都会使用它。熟练掌握 Fragment,是 Android 开发者必备技能之一。
网友评论