EventBus的使用
来源:互联网 发布:淘宝怎么买二手衣服 编辑:程序博客网 时间:2024/06/07 17:17
EventBus主要用于各个组件之间的通信,EventBus作为事件总线方便项目解耦。EventBus整个框架采用订阅者模式来操作。
这里我用两个activity进行通信
这个是第一个activity
public class MainActivity extends AppCompatActivity { @BindView(R.id.tv_m) TextView title; @BindView(R.id.secondActivityBtn) Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); ButterKnife.bind(this); } @OnClick(R.id.tv_m) public void sayHi(TextView v) { v.setText("ni hao !"); } @OnClick(R.id.secondActivityBtn) public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } //订阅方法,当接收到事件的时候,会调用该方法 @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(MessageEvent messageEvent){ Log.d("cylog","receive it"); title.setText(messageEvent.getMessage()); Toast.makeText(MainActivity.this, messageEvent.getMessage(), Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }}
对应的xml布局
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 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" tools:context="com.example.eventbustest.MainActivity"> <TextView android:id="@+id/tv_m" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" tools:layout_constraintTop_creator="1" tools:layout_constraintRight_creator="1" tools:layout_constraintBottom_creator="1" tools:layout_constraintLeft_creator="1" /> <Button android:id="@+id/secondActivityBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginTop="117dp" android:text="点击打开新的Activity" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /></android.support.constraint.ConstraintLayout>
第二个activity
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Button button = (Button) findViewById(R.id.sendMessageBtn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().post(new MessageEvent("Hello !.....")); } }); }}
对应xml布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <Button android:id="@+id/sendMessageBtn" android:text="发送消息" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
还有一个实体类
public class MessageEvent { private String message; public MessageEvent(String message){ this.message = message; } public String getMessage(){ return message; }}
model里面的build.gradle里面设置dependencies依赖
compile 'org.greenrobot:eventbus:3.0.0'compile 'com.jakewharton:butterknife:8.5.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
然后运行一下你就可以看到结果了!
官方文档链接:http://greenrobot.org/eventbus/documentation
0 0
- EventBus 《二》 Android EventBus的简单使用
- EventBus的使用初试
- EventBus的使用
- EventBus的使用
- EventBus的简单使用
- EventBus的使用
- eventbus的使用
- EventBus的初步使用:
- EventBus的使用
- EventBus的简单使用
- EventBus的使用总结
- EventBus的使用
- EventBus框架的使用
- EventBus的简单使用
- Eventbus的基本使用
- EventBus的使用
- EventBus的使用
- EventBus的简单使用
- 剑指offer-面试题06-重建二叉树
- 欢迎使用CSDN-markdown编辑器
- 谷歌TensorFlow 1.0发布,智能手机也能玩转深度学习
- A Discriminative Feature Learning Approach for Deep Face Recognition 原理及在caffe实验复现
- Win10安装.msi文件出现错误2502、2503解决办法 !
- EventBus的使用
- 使用Kotlin开发Android项目(二)
- java
- Ecshop模板开发(二十四):当前所在位置显示
- ZOJ 3603 Draw Something Cheat (字符串,小陷阱)
- 微软Cortana对第三方开放:小娜将能操控你家的电器
- P1282 多米诺骨牌
- 汇编程序:红红绿绿的字符
- LFW的正确率,使用方法