安卓:当中两个activity的监听回调事件

本文介绍了一种在Android应用中通过监听回调处理页面间通信的方法,避免了因为返回导致程序崩溃的问题。在第一页启动第二页时不传递参数,而是通过接口将第二页的数据回调到第一页,并在数据接收后自动关闭第二页,实现了无参跳转并确保程序稳定性。
摘要由CSDN通过智能技术生成

挺重要挺实用的知识点

 

首先来理解一下我实现的结果

比如我要选择一个类型,就得跳转到一个Activity

用监听回调是一个好到方法,但是,如果执行返回按钮销毁掉选择的页面,那么程序就崩溃了,用这个方法,就必须返回一个参数,所以。。。我就想到了listener

 

这篇文章解决了上述的一个问题,就是不一定非得带参数

跳转到第二个页面时可以不附加任何参数回退出来,并且保证程序的不崩溃

我这边描述一下现象,第一页跳转过去,在第二页选择触发事件,这个时候第二页的值就会传回第一页,第一页接收一下,就可以显示到控件上

此时此刻,第二页还在上层,你并不知道前面一页的数据已经充填了

这个时候就需要我们在第一页收到数据后,主动关闭显示在我们眼前的页面,听起来很复杂,其实十分有趣,这个模式可以解决不少问题,只是代码来回切,可能一时半会儿理解不了

 

首先建一个监听,我这个里面就搞了一个参数,有需求可以模仿的多加几个

  public interface ProjectListener {
      void projectName(String name);
  }

我们按流程来,方便理解不容易出错

1.我们首先第一页点击跳转

直接跳转就行,可以不附加参数,当然,如果复用第二个页面的话,可以添加参数

intent.putExtra("admin_id", "11");//设置参数,""
Intent intent = new Intent();
intent.setClass(GirlAddActivity.this, ChooseProjectActivity.class);
GirlAddActivity.this.startActivity(intent);

2.第二个页面

定义全局接口对象, 当前接口对象为null
private static ProjectListener projectListener;
    public static void setProjectListener(ProjectListener pl){
        projectListener = pl;
    }

然后就是添加数据

projectListener.projectName("举个例子");

3.这个时候我们就要在第一个页面添加接收数据的接口了

其中et_project就是一个Editview控件,就不赘述了

ChooseProjectActivity.setProjectListener(new ProjectListener() {
   @Override
   public void projectName(String name) {
       et_project.setText(name);
    }
});

 

进行到这里差不多就实现了回调,如果我们想在第一个收到数据的时候,关闭的选择页面怎么办呢

在第三点当中执行一下这个方法

    /*
     * 关闭选择页面
     * */
    private void finishChooseProject() {
        if (ChooseProjectActivity.instance != null) {
            ChooseProjectActivity.instance.finish();
        }
    }

第二页面,中要加一下,这样就可以

public static ChooseProjectActivity instance=null;


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_choose_project);
        instance = this;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值