Android实现EventBus登录界面与传值(粘性事件)

本文实例为大家分享了Android实现EventBus登录界面与传值的具体代码,供大家参考,具体内容如下

展示效果

添加EventBus导入依赖

compile 'org.greenrobot:eventbus:3.0.0'

主MainActivity方法

public class MainActivity extends AppCompatActivity {
 private EditText username,password;
 private Button btn_go;
 private List<UserEvent> mdata;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 mdata=new ArrayList<UserEvent>();
 username=(EditText)findViewById(R.id.username);
 password=(EditText)findViewById(R.id.passwork);
 btn_go=(Button)findViewById(R.id.btn_go);
 btn_go.setText("登录");
 btn_go.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
  String name = username.getText().toString().trim();
  String pass = password.getText().toString().trim();
  EventBus.getDefault().postSticky(new UserEvent(name,pass));
  startActivity(new Intent(MainActivity.this,MainBctivity.class));
  }
 });
 }
}

主MainBctivity方法

public class MainBctivity extends AppCompatActivity {
 private Button btn_shou;
 private TextView tv_b;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main_bctivity);
 btn_shou=(Button)findViewById(R.id.btn_shou);
 btn_shou.setText("接受参数");
 btn_shou.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
  if(!EventBus.getDefault().isRegistered(MainBctivity.this)){
   EventBus.getDefault().register(MainBctivity.this);
  }else{
   Toast.makeText(MainBctivity.this, "请勿重复注册事件", Toast.LENGTH_SHORT).show();
  }
  }
 });
 tv_b=(TextView)findViewById(R.id.tv_b);
 tv_b.setText("账号多少呢!");

 }

 @Override
 protected void onDestroy() {
 super.onDestroy();
 EventBus.getDefault().unregister(MainBctivity.this);
 }
 @Subscribe(threadMode = ThreadMode.POSTING,sticky = true)
 public void onMoonEvent(UserEvent userevent){
 tv_b.setText("账号:"+userevent.getUsername()+"密码:"+userevent.getPasswork());
 }
}

UserEvent(事件类)

public class UserEvent {
 private String username;
 private String passwork;

 public UserEvent(String username, String passwork) {
 this.username = username;
 this.passwork = passwork;
 }

 public String getUsername() {
 return username;
 }

 public void setUsername(String username) {
 this.username = username;
 }

 public String getPasswork() {
 return passwork;
 }

 public void setPasswork(String passwork) {
 this.passwork = passwork;
 }

 public UserEvent() {
 }

 @Override
 public String toString() {
 return "UserEvent{" +
  "username='" + username + '\'' +
  ", passwork='" + passwork + '\'' +
  '}';
 }
}

activity_main(MainActivity的布局)

<RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <ImageView
  android:id="@+id/hh_img"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@mipmap/logo"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="40dp"
  />
 <EditText
  android:id="@+id/username"
  android:layout_below="@id/hh_img"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:hint="用户名"
  />
 <EditText
  android:id="@+id/passwork"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_below="@id/username"
  android:layout_marginTop="10dp"
  android:hint="密码"
  />
 <Button
  android:id="@+id/btn_go"
  android:layout_below="@id/passwork"
  android:layout_marginTop="10dp"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  />
 <TextView
  android:id="@+id/new_user"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/btn_go"
  android:text="新用户"
  android:layout_marginTop="5px"
  />
 </RelativeLayout>

activity_main_bctivity(MainBctivity的布局)

<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentTop="true"
 android:layout_centerHorizontal="true"
 android:layout_marginTop="20dp"
 android:id="@+id/btn_shou" />

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/btn_shou"
 android:layout_centerHorizontal="true"
 android:layout_marginTop="32dp"
 android:id="@+id/tv_b" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android 消息分发使用EventBus的实例详解
  • Android EventBus 3.0.0 使用总结(必看篇)
  • Android中使用开源框架eventbus3.0实现fragment之间的通信交互
  • Android之利用EventBus发送消息传递示例
  • Android 中 EventBus 的使用之多线程事件处理
  • Android EventBus(普通事件/粘性事件)详解
(0)

相关推荐

  • Android EventBus 3.0.0 使用总结(必看篇)

    前言 EventBus框架 EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多.用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是限定了方法名,不支持注解.另一个库square/otto修改自 Guava ,用的人也不少.所以今天我们研究的目标是greenrobot的EventBus. EventBus 简介 1.EventBus3.0.0 是最新的

  • Android中使用开源框架eventbus3.0实现fragment之间的通信交互

    1.概述 在之前的博文中简单介绍过如何实现fragment之间的信息交互:<Android中Fragment与Activity之间的交互(两种实现方式)>,今天继续给大家介绍一种可以实现此效果的另外一种方式EventBus.(相比于handler,接口回调,bundle传参,这个简单好用到哭) EventBus是Android下高效的发布/订阅事件的消息总线.作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment.Activity.Service.线程

  • Android 中 EventBus 的使用之多线程事件处理

    在这一系列教程的最后一篇中,我想谈谈GR的EventBus,在处理多线程异步任务时是多么简单而有效. AsyncTask, Loader和Executor-- 拜托! Android中有很多种执行异步操作的方法(指平行于UI线程的).AsyncTask对于用户来说是最简单的一种机制,并且只需要少量的设置代码即可.然而,它的使用是有局限的,正如Android官方文档中所描述的: AsyncTask被设计成为一个工具类,在它内部包含了Thread和Handler,但它本身并不是通用线程框架的一部分.

  • Android 消息分发使用EventBus的实例详解

    Android 消息分发使用EventBus的实例详解 1. AndroidStudio使用 dependencies { //最新版本 compile 'org.greenrobot:eventbus:3.0.0' //可以翻倍提高EventBus使用效率 provided 'de.greenrobot:eventbus-annotation-processor:3.0.0-beta1' } 2. 在基类Activity中配置 /** * Activity基类 */ protected Eve

  • Android之利用EventBus发送消息传递示例

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦. 1.下载EventBus的类库 源码:EventBus_jb51.rar 2.基本使用 (1)自定义一个类,可以是空类,比如: public class AnyEventType { public AnyEventType(){} }

  • 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 prot

  • Android实现EventBus登录界面与传值(粘性事件)

    本文实例为大家分享了Android实现EventBus登录界面与传值的具体代码,供大家参考,具体内容如下 展示效果 添加EventBus导入依赖 compile 'org.greenrobot:eventbus:3.0.0' 主MainActivity方法 public class MainActivity extends AppCompatActivity { private EditText username,password; private Button btn_go; private

  • Android实现QQ登录界面遇到问题及解决方法

    先给大家炫下效果图: 首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得到焦点并且有输入内容时) ......... --- 这些问题都有一一解决 --- 以下是代码: 布局 fragment_main(问题2) <!-- android:focusable="true" android:focusableInTouchMode=&

  • Python+tkinter制作经典登录界面和点击事件

    目录 前言 环境使用 模块使用 代码部分 导入模块 先做一个大小合适的窗口 账号密码输入框 点击按钮 点击事件绑定 最后效果 前言 Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”:从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装.Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行. Tkinter 编写的

  • Android实现注册登录界面的实例代码

    本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="online.geekgalaxy.layoutlearn

  • Android Studio实现登录界面功能

    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 题目 设计一个登录界面.要求: a) 包含用户名.密码.记住密码.“忘记密码”按钮和“登录”按钮.b) 单击“忘记密码”按钮弹出提示对话框,对话框内容自拟. 答案 activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app=&q

  • Android登录界面的实现代码分享

    最近由于项目需要,宝宝好久没搞Android啦,又是因为项目需要,现在继续弄Android,哎,说多了都是泪呀,别的不用多说,先搞一个登录界面练练手,登录界面可以说是Android项目中最常用也是最基本的,如果这个都搞不定,那可以直接去跳21世纪楼啦. 废话不多说,先上效果图了,如果大家感觉还不错,请参考实现代码吧. 相信这种渣渣布局对很多人来说太简单啦,直接上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk

  • Android Studio实现简单的QQ登录界面的示例代码

    一.项目概述 QQ是我们日常生活使用最多的软件之一,包含登录界面和进入后的聊天界面.好友列表界面和空间动态界面等.登录界面的制作比较简单,主要考验布局的使用,是实现QQ项目的第一步.现在APP开发的首要工作都是实现登录页面,所以学会了QQ登录界面对以后的软件开发有着很重要的作用. 二.开发环境 三.详细设计 1.头像设计 首先在layout文件里面选择了RelativeLayout(相对布局)作为整个页面的布局. 在顶端放置了一个ImageView控件,宽度和高度设置的都是70dp,水平居中设置

  • Android中使用Kotlin实现一个简单的登录界面

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源. Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行. 在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言. 刚接触Kotlin的第一天,仿照QQ的登录界面,先写一个简单的登录界面,虽然笔者用的不是很熟,还在慢慢摸索,但是Kotlin是真

  • Android miniTwitter登录界面开发实例

    本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面. 先贴上最终要完成的效果图: miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearLayout布局,关于背景渐变色就不再贴代码了,效果如下图所示: 第二部分,红色线区域内,包括1,2,3,4 如图所示: 红色的1表示的是一个带圆

随机推荐