使用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 {
}
四、进行画面迁移
基本的画面迁移,并且携带一份入参,类型是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!"); } });
接受画面解析画面迁移的参数
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"); } } }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。