Android EventBus(普通事件/粘性事件)详解
作者:飞鸟96 发布时间:2022-12-22 18:48:09
标签:Android,EventBus
本文实例为大家分享了Android EventBus普通事件和粘性事件,供大家参考,具体内容如下
展示效果
添加EventBus导入依赖
compile 'org.greenrobot:eventbus:3.0.0'
主MainActivity方法
public class MainActivity extends AppCompatActivity {
private Button button_t,button_d;
private TextView tv_a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_d=(Button)findViewById(R.id.button_d);
button_d.setText("订阅");
button_t=(Button)findViewById(R.id.button_t);
button_t.setText("跳转到Bctivity");
tv_a=(TextView)findViewById(R.id.tv_a);
tv_a.setText("欢迎大家观看飞鸟96的博客");
button_t.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this,MainBctivity.class));
}
});
/*
* 订阅事件
* */
button_d.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!EventBus.getDefault().isRegistered(MainActivity.this)) {
EventBus.getDefault().register(MainActivity.this);
}else{
Toast.makeText(MainActivity.this, "请勿重复注册事件", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
/*
* 取消注册事件
* */
EventBus.getDefault().unregister(MainActivity.this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMoonEvent(MessageEvent message){
tv_a.setText(message.getMessage());
}
@Subscribe(sticky = true)
public void onMoonEvents(MessageEvent message){
tv_a.setText(message.getMessage());
}
}
主MainBctivity方法
public class MainBctivity extends AppCompatActivity {
private Button button_f,button_n;
private TextView tv_b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_bctivity);
button_f=(Button)findViewById(R.id.button_f);
button_f.setText("发送事件");
button_n=(Button)findViewById(R.id.button_n);
button_n.setText("粘性事件");
tv_b=(TextView)findViewById(R.id.tv_b);
tv_b.setText("MainBctivity");
/*发送事件*/
button_f.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventBus.getDefault().post(new MessageEvent("飞鸟96博客祝你用的开心!"));
finish();
}
});
/*粘性事件*/
button_n.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventBus.getDefault().postSticky(new MessageEvent("开心开心开开心!!"));
finish();
}
});
}
}
MessageEvent(事件类)
public class MessageEvent {
private String message;
public MessageEvent(String message) {
this.message = message;
}
public MessageEvent() {
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
activity_main(MainActivity的布局)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent="true"
android:id="@+id/tv_a" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:id="@+id/button_t"
android:layout_below="@id/tv_a" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:id="@+id/button_d"
android:layout_below="@id/button_t" />
activity_main_bctivity(MainBctivity的布局)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent="true"
android:id="@+id/tv_b" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:id="@+id/button_f"
android:layout_below="@id/tv_b" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:id="@+id/button_n"
android:layout_below="@id/button_f" />
来源:http://blog.csdn.net/qq_39493777/article/details/78467433
0
投稿
猜你喜欢
- 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据
- 背景公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型
- Spring 使用Junit单元测试并配置数据源一、问题描述由于公司项目中的数据源是配置在Tomcat中的server.xml中的,所以在使
- 本文实例为大家分享了Java实现分页功能的具体代码,供大家参考,具体内容如下不用根据改变SQL的形式去查询; 直接查询所有的数据,根据页码自
- 目录IO简介1.流Stream 2.IO流的继承结构3 File文件类3.1概述3.2创建对象3.3常用方法 3.4 练
- 表达式树的概念表达式树的创建有 Lambda法 和 组装法。学习表达式树需要 委托、Lambda、F
- 返回Json实体类属性大小写问题总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的时候返回小写,但是
- 前言:quartz是一个定时调度的框架,就目前市场上来说,其实有比quartz更优秀的一些定时调度框架,不但性能比quartz好,学习成本更
- 本文实例讲述了Java文件操作工具类fileUtil。分享给大家供大家参考,具体如下:package com.gcloud.common;i
- 本文实例讲述了Android实现简单MD5加密的方法。分享给大家供大家参考,具体如下:网上关于android下MD5加密的资料很多,但是测试
- C# 中没有四舍五入函数,程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法Bankers roundi
- 一、概述最近需要用进度条,秉着不重复造轮子的原则,上github上搜索了一番,看了几个觉得比较好看的ProgressBar,比如:daima
- 一、@Configuration注解1、基本使用自定义配置类/** * 1、@Configuration 告诉SpringBoot这是一个配
- 提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.c
- package com.test; import java.io.BufferedReader; import jav
- 干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记。经常想得捡起,但总是因为一些原因,不能如愿。其实不是没有时间,只是有
- C#判断数据类型的简单示例代码:int i = 5; Console
- 布局管理器在java.awt 包中提供了5中常用的布局管理器,分别式FlowLayout(流式布局管理器)、BorderLayout(边界布
- 这段C#代码主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证/// <summary>
- 开篇JDBC类型与Java类型并不是完全一一对应的。所以在PreparedStatement绑定参数的时候需要把Java类型转为JDBC类型