欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ARouter路由框架简单的带参跳转以及带参返回代码

程序员文章站 2022-03-20 22:46:22
最近在研究阿里路由框架ARouter框架,以便实现项目的组件化操作。查阅了很多资料,以及看了很多大神前辈对此框架的讲解,还是一头雾水,直到看到了一篇简短粗暴的博客,也就是我之前转载的博客,路径在这里。 让我能最简单干净的去一步步的学习此框架。今天我写此博客,是在之前这位前辈的基础上,进行了升级,包含了ARouter带参跳转,跳转动画,以及返回带参。和上篇文章一样的部分,这里就不再写出, 可以查看上面的链接。主要展示不同的地方。MainActivity 文件 跳出文件public......

最近在研究阿里路由框架ARouter框架,以便实现项目的组件化操作。查阅了很多资料,以及看了很多大神前辈对此框架的讲解,还是一头雾水,直到看到了一篇简短粗暴的博客,也就是我之前转载的博客,路径在这里。  让我能最简单干净的去一步步的学习此框架。

今天我写此博客,是在之前这位前辈的基础上,进行了升级,包含了ARouter带参跳转,跳转动画,以及返回带参。和上篇文章一样的部分,这里就不再写出, 可以查看上面的链接。主要展示不同的地方。

 

MainActivity 文件  跳出文件

 

public class MainActivity extends AppCompatActivity {

    TextView tv1;
    Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1=findViewById(R.id.tv1);
        bt=findViewById(R.id.bt);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (Build.VERSION.SDK_INT >= 16) {//sdk大于等于16的动画方法:
                    ActivityOptionsCompat compat = ActivityOptionsCompat.
                            makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);


                    ARouter.getInstance()
                            .build(Constance.ACTIVITY_URL_SIMPLE,Constance.GROUP_HOME)
                            .withString("Awm","jay")//带一个参数过去
                            .withString("QQ","123456789")//带另一个参数过去
                            .withOptionsCompat(compat)//跳转动画
                            .navigation(MainActivity.this,123);//最后一个为requestCode 123


                } else {
                    Toast.makeText(MainActivity.this, "API < 16,不支持新版本动画", Toast.LENGTH_SHORT).show();
                }



            }
        });




    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==123 &&resultCode==123){

            if (data!=null){
                String ss=data.getStringExtra("bba");
                tv1.setText(ss);
            }


        }
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:gravity="center"
    >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
         />

    <Button
        android:id="@+id/bt"
        android:layout_width="150dp"
        android:layout_height="50dp"
        android:text="module跳转测试"
        />


</LinearLayout>

 

 

 

 

跳转到的TestActivity 文件

 

 

@Route(path ="/app/TestActivity",group = "home_center")
public class TestActivity extends AppCompatActivity {

    @Autowired(name = "Awm")
    String aa;

    @Autowired(name = "QQ")
    String bb;

    TextView tv1,tv2;

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        ARouter.getInstance().inject(this);

        tv1=findViewById(R.id.tv1);
        tv2=findViewById(R.id.tv2);
        button=findViewById(R.id.button_back);

        tv1.setText(aa);
        tv2.setText(bb);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.putExtra("bba","666777888");
                setResult(123,intent);
                finish();
            }
        });


    }
}

 对应的

activity_test

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".TestActivity">


    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#171717"
        android:text="module---libraryOne页面"
        />


    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#171717"
        android:text="module2"
        />



    <Button
        android:id="@+id/button_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="带参返回按钮"
        />



</LinearLayout>

 

还有一个文件:

Constance  (PS:此文件应该放在单独的module,也就是公用的library或module中,然后引用,这里我只是测试,所以放在了MainActivity 所在module中,导致TestActivity所在的module没法引用,于是我直接在TestActivity上面写了对应的地址,后面我会放到单独的公共module里)这个文件就可以统一管理路径跳转了,注意,路径一定要两级哦,也就是“/app/TestActivity”   前面的“/”一定不能掉,不然无法跳转哦

public final class Constance {
    
   
    public static final String ACTIVITY_URL_SIMPLE="/app/TestActivity";






    public static final String GROUP_HOME="home_center";
}

到这里就结束啦,其余包的引入以及其他环境配置,和前面一篇一样,也就是对应的两个module都需要引入ARouter框架。

本文地址:https://blog.csdn.net/weixin_38380115/article/details/110550124