ARouter路由框架简单的带参跳转以及带参返回代码
程序员文章站
2022-06-24 11:57:42
最近在研究阿里路由框架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