Android 学习——Fragment 作者:pandali 时间:2021年10月02日 分类:计算机技术,Android 字数:2873 warning: 这篇文章距离上次修改已过237天,其中的内容可能已经有所变动。 参考文档:[Fragment基本使用](https://www.jianshu.com/p/a4c51309bc19 "Fragment基本使用") ### Fragment使用 使用Fragment有两种方式,分别是静态加载和动态加载 #### 静态加载 关于静态加载的流程如下: - 定义Fragment的xml布局文件 - 自定义Fragment类,继承Fragment类或其子类,同时实现onCreate()方法,在方法中,通过inflater.inflate加载布局文件,接着返回其View - 在需要加载Fragment的Activity对应布局文件中fragment 的name属性设为全限定类名,即包名.fragment - 最后在Activity调用setContentView()加载布局文件即可 1.定义Fragment布局,新建my_fragment.xml ``` ``` 2.自定义Fragment类 ``` public class myFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_fragment, container,false); return view; } } ``` 3.在需要加载Fragment的Activity对应的布局文件中添加Fragment标签 ``` ``` 4.在Activity的onCreate()方法中调用setContentView()加载布局文件即可 #### 动态加载 动态加载Fragment的流程如下: - 获得FragmentManager对象,通过getSupportFragmentManager() - 获得FragmentTransaction对象,通过fm.beginTransaction() - 调用add()方法或者repalce()方法加载Fragment; - 最后调用commit()方法提交事务 1.同静态加载一样,首先定义Fragment的布局和类,修改主布局文件,不指定 fragment 标签的name属性。 2.实现Fragment调用 ``` public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(this); replaceFragment(new RigthFragment()); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: replaceFragment(new AnotherRightFragment()); break; default: break; } } private void replaceFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); // 开启一个事务 transaction.replace(R.id.right_layout, fragment); transaction.commit(); } } ```