【Android】使用ARouter进行画面迁移的管理

数字追雪人
• 阅读 844

使用ARouter进行画面迁移的管理

本篇内容是学习笔记,不代表是最好的方案,不保证所有方法的理解正确。
欢迎各位大佬指正,优化。

一、创建FridgeApplication类

在Application类的onCreate进行ARouter的初始化

public class FridgeApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        // 如果当前是调试状态,打开日志和调试模式
        if (Config.getInstance().isDebug()) {
            ARouter.openLog();
            ARouter.openDebug();
        }

        // 初始化ARouter
        ARouter.init(this);
    }
}

二、修改AndroidManifest.xml文件

增加FridgeApplication类

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.irisleon.fridge">

    <application
        android:name=".FridgeApplication"   <-- 增加这里
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.FridgeHelper">
        <activity android:name=".activity.HomeActivity" />
        <activity android:name=".activity.HelloActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

三、在Activity类上增加注解

创建了两个Activity类,进行标注。为了保证path不出现拼写错误。此处使用枚举进行替换。

public class ARouterTag {
    public static final String HelloActivity = "/fridge/hello_activity";
    public static final String HomeActivity = "/fridge/home_activity";
}
@Route(path = ARouterTag.HomeActivity)
public class HomeActivity extends AppCompatActivity {
}
@Route(path = ARouterTag.HelloActivity)
public class HelloActivity extends AppCompatActivity {
}

四、进行画面迁移

  1. 基本的画面迁移,并且携带一份入参,类型是String,名称是transFromPath

    // ARouter进行画面迁移
    ARouter.getInstance().build("/fridge/home_activity")
     .withString("transFromPath", ARouterTag.HelloActivity)
     .navigation(HelloActivity.this, new NavCallback() {
    
     @Override
     public void onArrival(Postcard postcard) {
         Log.i(TAG, "ARouter has been completed!");
     }
    });
  2. 接受画面解析画面迁移的参数

    
    public class HomeActivity extends AppCompatActivity {
    
     // ARouter会自动将transFromPath对应的数据赋值给mTransFromPath。
     // mTransFromPath的访问权限必须是public。
     @Autowired(name = "transFromPath")
     public String mTransFromPath = "";
    
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_home);
    
         // 解析ARoute提供的参数
         ARouter.getInstance().inject(this);
    
         // 如果迁移时数据正确设定,此处已经可以取得mTransFromPath
         if (mTransFromPath == "") {
             Log.e(TAG, "ARouter parameter[transFromPath] is unrecognized");
         }
     }
    }
点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
4年前
你不可不知的JS面试题(第二期)
1、什么是继承?子类可以使用父类的所有功能,并且对功能进行扩展。新增方法改用方法(1)、ES6使用extends子类继承父类的方法。// 父类    class A        constructor(name)            this.name name;                getNa
刘望舒 刘望舒
4年前
Android包管理机制(四)PMS的创建过程
Android框架层Android包管理机制Android框架层本文首发于微信公众号「刘望舒」<!more前言PMS的创建过程分为两个部分进行讲解,分别是SyetemServer处理部分和PMS构造方法。其中SyetemServer处理部分和AMS和WMS的创建过程是类似的,可以将它们进行对比,这样可以更好的理解和记忆这一知识点。1.SyetemS
刘望舒 刘望舒
4年前
Android深入理解Context(二)Activity和Service的Context创建过程
Android框架层Android深入理解Contextcategories:Android框架层本文首发于微信公众号「刘望舒」前言上一篇文章我们学习了Context关联类和ApplicationContext的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程。需要注意的是,本篇的知识点会和深入理解四大组件系列的
Wesley13 Wesley13
3年前
java 并发容器一之BoundedConcurrentHashMap(基于JDK1.8)
最近开始学习java并发容器,以补充自己在并发方面的知识,从源码上进行。如有不正确之处,还请各位大神批评指正。前言:本人个人理解,看一个类的源码要先从构造器入手,然后再看方法。下面看BoundedConcurrentHashMap的注释1  先看HashTable的介绍:    Thisclassimplementsahasht
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Android 插件化原理解析——Activity生命周期管理
在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,但是仅仅把类加载进来就足够了吗?Activity,Service等组件是有生命周期的,它们统一由系统服务AMS管理;使用ClassLoader可以从插件中创建Activit
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
ARouter使用随记
官方文档地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Falibaba%2FARouter%2Fblob%2Fmaster%2FREADME_CN.md)其他配置1.创建一个config.gradleext{isDeb
Stella981 Stella981
3年前
Android ClassLoader加载过程源码分析
背景Android开发过程中,开发的小伙伴对动态加载代码肯定不陌生。使用各个开源框架的中都应该有接触,其主要原理离不开ClassLoader等相关的类。这里我们会从Android中ClassLoader等相关类的源码入手,更好的理解和学习动态加载类的原理。详细分析ClassLoader加载原理Clas
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
ClickHouse数据表迁移实战之-remote方式 | 京东云技术团队
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。我们内部很多的报表、数据看板都基于它进行开发。今天为大家带来remote方式的ClickHouse数据表迁移的完整过程介绍,如有错误,还请各位大佬指正。