永发信息网

eventbus3.0怎么在两个界面间传递数据

答案:1  悬赏:10  手机版
解决时间 2021-11-26 07:01
  • 提问者网友:niaiwoma
  • 2021-11-25 15:31
eventbus3.0怎么在两个界面间传递数据
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-11-25 16:42
每个页面都需要在生命周期中注册和注销EventBus

  代码中使用了一个接口定义了一些方法

  public interface IText {

  void getText(Text text);
  void finish();
  }

  使用一个类实现这些方法,使用这个实现类来处理需要执行的逻辑
  public class TextImpl implements IText {
  private static final String TAG = TextImpl.class.getSimpleName();

  public TextImpl() {
  EventBus.getDefault().register(this);
  }

  @Override
  public void getText(Text text) {
  Log.e(TAG, "调用getText:" + text);
  EventBus.getDefault().post(text, "texttt");
  }

  @Override
  public void finish() {
  EventBus.getDefault().unregister(this);
  }
  }

  在方法中使用EventBus.getDefault().post(Object obj,String tag);发送内容,obj可以是对象、字符串等,tag就是对应要接收的方法的注解名。
  在第一页中实现对应tag注解的方法,用以更新textView内的数据:
  @Subscriber(tag = "texttt")
  private void changeText(Text text) {
  Log.e(TAG, "hhhhhhhhhhhhh");
  mTextView.setText(text.getText());
  }

  这样的话,EventBus就会把Text这个实体对象传递给第一个Activity,然后根据对应的方法在主线程中更新UI。
  需要注意,没有在栈中的Activity是无法传递数据的(例如直接打开第一个Activity,然后传递给尚未打开的第二个Activity,就不能传递。)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯