如何在一个项目里创建Fragment

本文介绍了如何在Android项目中使用Navigation组件更高效地管理Fragment。通过DataBinding降低布局和页面的耦合,创建BaseFragment避免重复代码,然后详细阐述了如何创建并绑定Fragment到导航图,包括设置图标和标题,最后展示如何在Activity中使用NavigationView完成绑定。

Hello,大家好,紧张而已刺激的毕业答辩刚刚结束,我终于可以有一段时间去和大家分享一些我在毕业设计中的一些我认为好用的地方惹。作为一个初学者,肯定有好多不对的地方,希望大家可以对我进行指正,让我们一起进步,互相交流~

今天要说的就是关于使用navigation对碎片式布局进行管理,小编在刚开始学习安卓的时候,创建fragment的方法非常的笨拙可以说是,通过创建一个BottomActivity对,四个fragment进行管理,可以说工作量有些大,而且有些麻烦,需要写好多东西才可以实现,但是今天所使用的是我目前找到的能使创建fragment时更加轻量化的方法,可以说非常好用。那么很多初学者就说,用起来会不会不太一样,其实并不,用法简直一摸一样,而且更加直观,能让你的代码更加清晰,话不多说开始正题~

首先我们的第一步,我们要知道什么是DataBinding,他大致上来说就是让布局文件承担了部分原本属于页面的工作,也使得布局文件和页面的耦合的进一步降低。用法也很简单我们只需要在build.gradle(app)里面加上下面的这句话:

    dataBinding {
        enabled = true
    }

然后再sync now 一下就搞定了。

然后我们就要开始绑定Fragment了,首先我们要先拥有一个BaseFragment,为什么要用BaseFragment呢?因为通过Base的封装可以让你解决重复性编码问题。下面看代码:

public abstract class BaseFragment extends Fragment {
    //模View
    public View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        view = inflater.inflate(getLayoutRes(),container,false)
Android 开发中,Fragment 间的导航可以通过多种方式实现,开发者通常会根据项目需求和架构选择合适的方法。以下是几种常见的 Fragment 间导航方法: ### 使用 FragmentManager 和 FragmentTransaction 这是最基础也是最常用的方式。通过 `FragmentManager` 获取事务对象 `FragmentTransaction`,然后使用 `replace()`、`add()` 或 `hide()` 和 `show()` 等方法来切换 Fragment。这种方式适合简单的界面切换,但在处理复杂交互时需要手动管理回退栈。 示例代码如下: ```java FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, new TargetFragment()); fragmentTransaction.addToBackStack(null); // 添加到回退栈 fragmentTransaction.commit(); ``` ### 使用 NavController 和 Navigation Component 从 Android Jetpack 组件推出以来,Navigation Component 成为了推荐的导航解决方案。它提供了一个声明式的导航框架,开发者可以通过可视化编辑器创建导航图(navigation graph),并利用 `NavController` 来处理 Fragment 之间的导航。 在代码中使用 NavController 的示例如下: ```java NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); navController.navigate(R.id.action_sourceFragment_to_targetFragment); ``` 这种方法简化了 Fragment 之间的导航逻辑,并且自动处理了回退栈、深层链接等复杂功能。 ### 通过接口回调进行通信 当两个 Fragment 之间需要传递数据或者触发导航时,可以通过定义接口来实现通信。通常的做法是让宿主 Activity 实现接口,并在其中一个 Fragment 中调用接口方法,由 Activity 负责执行导航到目标 Fragment。 例如,在源 Fragment 中定义一个接口: ```java public interface OnFragmentInteractionListener { void onNavigateToAnotherFragment(); } ``` 然后在 Activity 中实现该接口并处理导航逻辑。 ### 使用 ViewModel 共享数据 如果多个 Fragment 需要共享数据并且根据数据变化进行导航,可以使用 `ViewModel` 来存储和管理 UI 相关的数据。通过共享的 `ViewModel`,Fragment 可以观察数据变化并在满足条件时触发导航。 ### 使用 ViewPager 和 FragmentStatePagerAdapter 对于需要滑动切换的场景,可以使用 `ViewPager` 结合 `FragmentStatePagerAdapter` 或 `FragmentPagerAdapter` 来实现。这种方法适用于 Tab 式导航,例如微信首页的滑动切换。 示例代码如下: ```java ViewPager viewPager = findViewById(R.id.viewPager); viewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); ``` 其中 `MyPagerAdapter` 需要继承自 `FragmentStatePagerAdapter` 并重写相关方法以提供 Fragment 实例。 ### 使用第三方库 还有一些第三方库可以帮助简化 Fragment 间的导航,如 `Fragmentation` 等。这些库通常提供了更丰富的功能,比如动画效果、嵌套 Fragment 支持等。 无论采用哪种方式,开发者都应该考虑用户体验的一致性以及代码的可维护性。选择合适的方法取决于具体的应用场景和个人或团队的技术偏好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值