应用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");        }    }}