Android Studio接入ARouter以及简单使用

2019-06-13 11:31:32

传送门 Android Studio接入ARouter以及简单使用


1 所有module的 build.gradle中


注意是所有的module!

注意是所有的module!

注意是所有的module!


你可能会说如果我的A module依赖了 B module,那么只要在B里面配置是不是就可以了?绝对不行!无论module之间关系如何,必须要同样配置!包括主项目和library项目!


dependencies {

    ......

    

    compile ('com.alibaba:arouter-api:1.4.1'){ exclude group: 'com.android.support' }

    annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

}

1

2

3

4

5

6

AROUTER_MODULE_NAME这个参数是固定的,不用改成自己的项目名


android {

    defaultConfig {

        ...

        javaCompileOptions {

            annotationProcessorOptions {

                arguments = [AROUTER_MODULE_NAME: project.getName()]

            }

        }

    }

}

1

2

3

4

5

6

7

8

9

10

2 Application初始化


public class MyApplication extends Application {  

  

  

    @Override  

    public void onCreate() {  

        super.onCreate();  

  

        initRouter(this);  

    }  

  

  

    public static void initRouter(Application application) {  

        if (BuildConfig.DEBUG) {  

            ARouter.openLog();     // 打印日志  

            ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)  

        }  

        ARouter.init(application);  

    }  

  

  

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

3 使用

/app/MainActivity 自定义但是必须有两级(两个/组成)


@Route(path = "/app/MainActivity")

public class MainActivity extends AppCompatActivity {


    private Button button;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

    }

}

1

2

3

4

5

6

7

8

9

public class MusicActivity extends AppCompatActivity {


    private Button button;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.music_activity_main);

        initView();

    }


    private void initView() {

        button=findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                ARouter.getInstance().build("/app/MainActivity").navigation();

            }

        });

    }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20




  • 2017-05-12 16:33:24

    说说JSON和JSONP,也许你会豁然开朗

      JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。

  • 2017-05-25 23:18:23

    webpack图片的路径与打包

    刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle)。下面我们就来分析下在webpack项目中图片的应用场景。

  • 2017-06-17 18:33:17

    NodeJs使用asyncAwait两法

    async/await使用同步的方式来书写异步代码,将异步调用的难度降低到接近于0,未来必将大放异彩。然而在当下,由于标准化的缓存步伐,async/await尚在ES7的草案中。为了尝先,特试用了下面两种方式:

  • 2017-06-18 02:26:17

    Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F

    我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范)。正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情。那为什么会报错呢?

  • 2017-06-18 02:34:22

    谈mysql中utf8和utf8mb4区别

    MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。