Android 小白 Fragment 入门

作者: uniapp | 来源:发表于2018-08-25 11:20 被阅读8次

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

    关注和喜欢都是对我的鼓励和支持~

    相关文章

      网友评论

        本文标题:Android 小白 Fragment 入门

        本文链接:https://www.haomeiwen.com/subject/ingwiftx.html