阿里巴巴ARouter地址
实现需求:
跳转关系为: app -> mylib -> mymoudle -> app
- 项目的build.gradle中添加:
buildscript {
...
dependencies {
...
classpath "com.alibaba:arouter-register:1.0.2"
}
}
- 需要路由的moudle里面添加
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
...
}
dependencies {
...
// 替换成最新版本, 需要注意的是api
// 要与compiler匹配使用,均使用最新版可以保证兼容
implementation 'com.alibaba:arouter-api:1.4.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
}
- 由于路由是组件化框架,所以不要忘记主项目和子项目的引用关系,否则会报错
ARouter::: ARouter::There is no route match the path [/moudle/1], in group [moudle][ ]
implementation project(':mylib')
implementation project(':mymoudle')
- application中配置
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ARouter.openLog();
ARouter.openDebug();
ARouter.init(this);
}
}
- app中写两个页面:
@Route(path = "/app/1")
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ARouter.getInstance().build("/mylib/1")
.navigation();
}
}
@Route(path = "/app/2")
public class HelloActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello);
Intent intent = getIntent();
String msg = intent.getExtras().getString("aaa");
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
}
- mylib中写一个中转页面
@Route(path = "/mylib/1")
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ARouter.getInstance().build("/moudle/1")
.withString("aaa","Test传过来")
.navigation();
}
}
- mymoudle中写一个中转页面
@Route(path = "/moudle/1")
public class MoudleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_moudle);
// 获取路由对应的intent
String msg = getIntent();.getExtras().getString("aaa");
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
ARouter.getInstance().build("/app/2")
.withString("aaa",msg)
.navigation();
}
}
打印结果