单 Activity 多 Fragment 架构如何使用路由进行统一跳转
Posted 陈旭金-小金子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单 Activity 多 Fragment 架构如何使用路由进行统一跳转相关的知识,希望对你有一定的参考价值。
前言
有一些公司的项目, 采用的架构是单 Activity, 多 Fragment 的形式.
核心就是依赖标记到静态方法上实现. Component 支持这种形式, 所以下面是以 Component 为例讲解的
正文
跳转一个 Activity, 多数框架都可以支持. 但是现在市面上所有的框架, 跳转 Fragment 只是一个名词, 只是通过服务发现获取到一个 Fragment 而已.
比如下面的代码:
Fragment fragment = Router.with("xxxFragment").putXXX(xxx).navigate();
然后你拿到 Fragment 进行处理. 那能不能这个过程能和正常的跳转一样去使用呢? 一个正常的跳转如下样子:
Router.with(context)
.host("<host>")
.path("<path>")
.putInt(xxx)
.putString(xxx)
.forWard();
那么如何让上述的获取 Fragment, 变成真正意义上的跳转呢?
实现步骤如下:
-
编写一个静态方法, 方法返回一个 Intent. 目标是你项目的单 Activity. 比如你的单 Activity 名称为 MainActivity
@RouterAnno( host = "module1", path = "fragment1" ) public static Intent toFragment1(@NonNull RouterRequest request) Intent intent = new Intent(request.getRawContext(), MainActivity.class); intent.putString("fragmentFlag", "fragment1") return intent;
-
在 MainActivity 的 onNewIntent 中统一处理 Intent
public class MainAct extends AppCompatActivity // ......... @Override protected void onNewIntent(Intent intent) super.onNewIntent(intent); startProxyRouter(intent.getExtras()); // 拿到目标的 Fragment String fragmentFlag = intent.getStringExtra("fragmentFlag"); if (!TextUtils.isEmpty(fragmentFlag)) Fragment fragment = Router.with(fragmentFlag) .putAll(intent.getExtras()) .navigate(); // 处理你的 fragment 进行显示
-
开始使用. 比如例子中的跳转可以写了:
Router.with(context) .host("module1") .path("fragment1") .putInt(xxx) .putString(xxx) .forWard();
-
然后你以后只要对每一个 Fragment 都写一个静态方法来描述就好了. 就可以像普通跳转 Activity 一样了.
如果对你有帮助, 请 点个 star
以上是关于单 Activity 多 Fragment 架构如何使用路由进行统一跳转的主要内容,如果未能解决你的问题,请参考以下文章
适合初学者入门的项目,通过对 Kotlin 的系统运用,实现的一个功能完备符合主流市场标准 App。包含知识点(MVVM 开发架构单 Activity 多 Fragment 项目设计暗夜模式屏幕
适合初学者入门的项目,通过对 Kotlin 的系统运用,实现的一个功能完备符合主流市场标准 App。包含知识点(MVVM 开发架构单 Activity 多 Fragment 项目设计暗夜模式屏幕
适合初学者入门的项目,通过对 Kotlin 的系统运用,实现的一个功能完备符合主流市场标准 App。包含知识点(MVVM 开发架构单 Activity 多 Fragment 项目设计暗夜模式屏幕
Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据
Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据