Android EventBus
效果图中我们可以看到,我们是点击"接收数据"按钮后,跳转到登录页面,然后把登录的数据传回并显示出来,我把"接收数据"按钮写在了SecondActivity中,所以记得在权限里,改变一下首页面的打开(将.MainActivity中的代码,挪到.SecondActivity中)
- <activity android:name=".MainActivity">
- </activity>
- <activity android:name=".SecondActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
首先是权限依赖导入
- compile 'org.greenrobot:eventbus:3.0.0'
1.创建SecondActivity类,并布局
activity_second布局(获取数据界面)
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/activity_second"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="com.eightgroup.eventbas.SecondActivity">
- <Button
- android:id="@+id/btn_shou"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="接收数据"/>
- <LinearLayout
- android:layout_marginTop="20dp"
- android:layout_below="@+id/btn_shou"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <TextView
- android:text="TextView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/name"
- android:layout_weight="1"/>
- <TextView
- android:text="TextView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/pass"
- android:layout_weight="1"/>
- </LinearLayout>
- </RelativeLayout>
然后是activity_main的布局(登录界面)
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/activity_main"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="com.eightgroup.eventbas.MainActivity">
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="textPersonName"
- android:ems="10"
- android:id="@+id/editText"
- android:hint="请输入用户名"/>
- <EditText
- android:layout_marginTop="10dp"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="numberPassword"
- android:ems="10"
- android:layout_below="@+id/editText"
- android:id="@+id/editText2"
- android:hint="请输入密码"/>
- <Button
- android:layout_marginTop="50dp"
- android:text="Button"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@+id/editText2"
- android:id="@+id/btn_send" />
- </RelativeLayout>
- public class MessageEvent {
- public final String name;
- public final String pass;
- public MessageEvent(String name, String pass) {
- this.name = name;
- this.pass = pass;
- }
- }
*普通模式:点击跳转然后再次跳回来可以将第二个页面的值传回来(用户登录)
*粘性模式:直接跳转传值(一般这个用的比较多)
.SecondActivity类(普通模式)
记住一定要写上注册EventBus
- EventBus.getDefault().register(SecondActivity.this);
- public class SecondActivity extends AppCompatActivity {
- private TextView name,pass;
- private Button button;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_second);
- //注册EventBus
- EventBus.getDefault().register(SecondActivity.this);
- name = (TextView) findViewById(R.id.name);
- pass = (TextView) findViewById(R.id.pass);
- button = (Button) findViewById(R.id.btn_shou);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(SecondActivity.this, MainActivity.class));
- }
- });
- }
- (粘性模式直接在@Subscribe后面添加(sticky = true))
- @Subscribe
- public void onUserEvent(MessageEvent event) {
- name.setText("用户名:" + event.name);
- pass.setText("密码:" + event.pass);
- }
- @Override
- protected void onDestroy() {
- //取消注册事件
- EventBus.getDefault().unregister(SecondActivity.this);
- super.onDestroy();
- }
- }
- public class MainActivity extends AppCompatActivity {
- private Button button;
- private EditText name,pass;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- button = (Button) findViewById(R.id.btn_send);
- name = (EditText) findViewById(R.id.editText);
- pass = (EditText) findViewById(R.id.editText2);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String userName="";
- String userPass="";
- if(!TextUtils.isEmpty(name.getText().toString())){
- userName = name.getText().toString();
- userPass = pass.getText().toString();
- MessageEvent event = new MessageEvent(userName,userPass);
- (粘性事件是post改为postSticky)
- EventBus.getDefault().post(event);
- }else {
- //不再发送事件Event
- Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
- }
- finish();
- }
- });
- }
- }
相关推荐
- ik上校_如何在Android上校准指南针以提高设备位置精度
- Android6年:面试阿里35K岗,三道题被干掉
- .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建
- 我女朋友都会的Android逆向(一)
- 通过JavaScript实现在Android WebView中点击查看图片,长按识别二维码
- amazon_如何使售价50美元的Amazon Fire平板电脑更像普通的Android(无需生根)
- Android 6.0 可以显示设备的安全补丁级别
- Android新漏洞其实没什么大不了 - Google如是说
- 利用Android Lost通过互联网或短信远程控制安卓设备
- 10 款网页设计师必知的免费 Android 应用
- CSS background-image背景图片相关介绍
- 【论文解读】【文字检测】PixelLink