【Android】ARouter的学习笔记

使用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!");
	}
});
  1. 接受画面解析画面迁移的参数

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

posted on 2021-04-16 16:25  GiKoo  阅读(148)  评论(0)    收藏  举报

导航