应用ARouter进行画面迁徙的治理
本篇内容是学习笔记,不代表是最好的计划,不保障所有办法的了解正确。
欢送各位大佬斧正,优化。
一、创立FridgeApplication类
在Application类的onCreate进行ARouter的初始化
<code class="java">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类
<code class="xml"><?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不呈现拼写错误。此处应用枚举进行替换。
<code class="java">public class ARouterTag { public static final String HelloActivity = "/fridge/hello_activity"; public static final String HomeActivity = "/fridge/home_activity"; }
<code class="java">@Route(path = ARouterTag.HomeActivity) public class HomeActivity extends AppCompatActivity { }
<code class="java">@Route(path = ARouterTag.HelloActivity) public class HelloActivity extends AppCompatActivity { }
四、进行画面迁徙
-
根本的画面迁徙,并且携带一份入参,类型是String,名称是transFromPath
<code class="java">// 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!"); } });
-
承受画面解析画面迁徙的参数
<code class="java"> 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"); } } }