Android技术知识Android开发Android开发

Android 小白 Fragment 入门

2018-08-25  本文已影响8人  uniapp

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 开发者必备技能之一。

关注和喜欢都是对我的鼓励和支持~
上一篇下一篇

猜你喜欢

热点阅读