ARouter
ARouter简介
ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。
ARouter优势
- 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中支持多模块工程使用
支持添加多个拦截器,自定义拦截顺序 - 支持依赖注入,可单独作为依赖注入框架使用
- 支持InstantRun
- 支持MultiDex(Google方案)映射关系按组分类、多级管理,按需初始化
- 支持用户指定全局降级与局部降级策略
- 页面、拦截器、服务等组件均自动注册到框架
- 支持多种方式配置转场动画
- 支持获取Fragment
- 支持Kotlin以及混编
ARouter实现跳转不同内容
首先在清单文件中添加需要的依赖
android {
compileSdkVersion 28
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [ AROUTER_MODULE_NAME : project.getName()]
}
}
}
}
dependencies {
...
implementation 'com.alibaba:arouter-api:1.5.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
...
}
自定义个类去继承Application并初始化ARouter
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ARouter.openLog();
ARouter.openDebug();
ARouter.init(this);
}
}
不同的跳转设置不同按钮的点击事件
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Fragment fragment;
Button button1,button2,button3,button4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = findViewById(R.id.bt1);
button2 = findViewById(R.id.bt2);
button3 = findViewById(R.id.bt3);
button4 = findViewById(R.id.bt4);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
fragment = new MyFragment();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt1:
ARouter.getInstance().build("/path/Main2Activity").navigation();
break;
case R.id.bt2:
ARouter.getInstance().build("/path/Main3Activity").withString("text","传值跳转到另一个Activity").navigation();
break;
case R.id.bt3:
getSupportFragmentManager().beginTransaction().add(R.id.frame,fragment).commit();
break;
case R.id.bt4:
ARouter.getInstance().build("/myapplication/TiaoActivity").navigation();
break;
}
}
}
a. moudle中Activity直接跳转
@Route(path = "/path/Main2Activity")
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
}
b. moudle中Activity传值跳转
@Route(path = "/path/Main3Activity")
public class Main3Activity extends AppCompatActivity {
@Autowired
String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
ARouter.getInstance().inject(this);
TextView textView = findViewById(R.id.tv);
textView.setText(text);
}
}
c. Fragment跳转
@Route(path = "/path/MyFragment")
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = LayoutInflater.from(getContext()).inflate(R.layout.layout,null);
return view;
}
}
d. 跨App的Activity跳转
准备另一个app并同样给添加依赖,再准备一个需要跳转到的moudle
@Route(path = "/myapplication/TiaoActivity")
public class TiaoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tiao);
}
}