android优雅实现页面跳转与传值

时间:2022-12-23 23:25:45

common

一个轻量的Android快速开发工具包,该库主要将开发中常用的东西封装起来,原则就是尽可能的封装那些常用的代码,尽可能的减少代码冗余,API设计的应该尽可能的简单

Github地址 : https://github.com/zfman/common

Maven

<dependency>
  <groupId>com.zhuangfei</groupId>
  <artifactId>common</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

Gradle

compile 'com.zhuangfei:common:1.0.0'

前言

页面跳转与传值工具的核心类是PageSender、PageReceiver,PageSender负责页面跳转与传值,PageReceiver负责接收上个页面传过来的值。类似的,PageUtils提供几个静态方法用于实例化相应的对象

普通跳转

普通跳转是指仅仅需要跳转到另一个Activity,而不需要传递值

跳转分为前往以及回退两种类型,两者的差别仅仅是过渡动画的差别

前往

PageUtils.sender().with(this)
          .target(AssetActivity.class)
          .execute();

回退

调用back()方法表示这是一个回退操作

PageUtils.sender().with(this)
          .target(MainActivity.class)
          .back()
          .execute();

传值跳转

传值跳转是指页面跳转的同时可以携带一些数据,如基本数据类型、对象、集合、Map等,内部封装了一个BundleModel对象用于实现传值操作

PageUtils.sender().with(this)
          .target(ReceiveActivity.class)
          .put("name","刘壮飞")
          .put("password","123456")
          .execute();

接收单个值

//接收单个键值对
private void receive() {
        returnClass= PageUtils.receiver().with(this)
                .getFromClass();

        String value1=PageUtils.receiver().with(this)
                .asString("name","defaultValue");

        receiveTextView.setText("接收单个键值对\nname:"+value1+"\n\n");
    }

接收多个值

当键值对比较多的时候推荐使用如下方法

//接收多个值
private void receiveMultiValues() {
        PageUtils.receiver().with(this)
                .multiKeys("name","password")
                .multiValues("defaultName","defaultPassword")
                .listener(new OnPageReceiveListener() {
                    @Override
                    public void onMultiReceived(String[] keys, Object[] results) {
                        String text="";
                        for(int i=0;i<keys.length;i++){
                            text+=keys[i]+":"+results[i]+"\n";
                        }
                        receiveTextView.append("接收多个键值对\n"+text);
                    }
                }).receive();
    }