ARouter的使用

ARouter

ARouter简介
ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。

ARouter优势

  1. 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中支持多模块工程使用
    支持添加多个拦截器,自定义拦截顺序
  2. 支持依赖注入,可单独作为依赖注入框架使用
  3. 支持InstantRun
  4. 支持MultiDex(Google方案)映射关系按组分类、多级管理,按需初始化
  5. 支持用户指定全局降级与局部降级策略
  6. 页面、拦截器、服务等组件均自动注册到框架
  7. 支持多种方式配置转场动画
  8. 支持获取Fragment
  9. 支持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);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值