Android(java)学习笔记164:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)...
1.首先我们看看下面这个需求:
这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到"短信内容"显示。这里要实现A界面和B界面数据互相通信。
2.实现上面需求,通过案例演示方法逻辑:
(1)新建一个Android工程,命名为"短信助手",首先设置activity_main.xml布局文件如下:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="com.himi.Smshelper.MainActivity" > 7 8 <Button 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:text="浏览选择短信" 12 android:onClick="select_Sms" /> 13 14 <EditText 15 android:id="@+id/et_Sms" 16 android:layout_width="match_parent" 17 android:layout_height="wrap_content" 18 android:lines="6" 19 android:inputType="textMultiLine" 20 /> 21 22 </LinearLayout>
(2)接下来,我们修改MainActivity.java,代码如下:
1 package com.himi.Smshelper; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.EditText; 8 9 public class MainActivity extends Activity { 10 private EditText ed_Sms; 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 ed_Sms = (EditText) findViewById(R.id.et_Sms); 17 18 19 Intent intent = getIntent(); 20 String context = intent.getStringExtra("context"); 21 22 ed_Sms.setText(context); 23 24 25 } 26 27 28 public void select_Sms(View view) { //按钮点击事件,点击按钮开启新的界面SmsActivity界面 29 Intent intent = new Intent(this, SmsActivity.class); 30 //直接打开新的界面 影响返回键,点击返回键只能返回上一个页面(不能直接退出) 用户体验不好 31 startActivity(intent); 32 } 33 34 }
这里当我们点击这个MainActivity界面上的按钮的时候,就会转而开启SmsActivity界面;
(3)SmsActivity代码如下:
1 package com.himi.Smshelper; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.AdapterView; 8 import android.widget.AdapterView.OnItemClickListener; 9 import android.widget.ArrayAdapter; 10 import android.widget.ListView; 11 12 public class SmsActivity extends Activity { 13 private ListView lv; 14 private String[] sms = { 15 "七夕节到了,送你一碗长寿面,祝你们的爱情像长寿面一样长长久久,永远不分离。送你一份酸辣汤,让你们生活像酸辣汤一样有滋有味。真诚的祝福你七夕快乐。", 16 "雪花的美丽,飘舞着心情的惦记,圣诞节最思念是你,给你我祝福的深意,把幸福累积,祈祷着祝愿的真挚,圣诞节祝你万事如意!", 17 "三年光阴,匆匆而过,如梦的年纪,弥漫着串串欢声笑语,不要挥手叹息,觉得繁花尽去,鼓足勇气,不要忘了互递惊喜的消息。", 18 "亲爱的织女:七夕情人节将至,愿我们高举中国特色痴情主义伟大旗帜,发扬鹊桥相会优良传统,保持二人世界爱情在线,携手开创爱情新局面。牛郎敬上。" 19 20 }; 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 // TODO 自动生成的方法存根 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_sms); 26 lv = (ListView) findViewById(R.id.iv); 27 lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item, sms)); 28 29 30 //给listview的条目设置点击事件 31 lv.setOnItemClickListener(new OnItemClickListener() { 32 33 public void onItemClick(AdapterView<?> parent, View view, 34 int position, long id) { 35 36 String context = sms[position]; 37 Intent intent = new Intent(SmsActivity.this, MainActivity.class); 38 intent.putExtra("context", context); 39 //直接打开新的界面 影响返回键,点击返回键返回上一个页面(不能直接退出),用户体验不好 40 startActivity(intent); 41 42 } 43 44 }); 45 46 } 47 48 }
记得在AndroidMainfest.xml中注册SmsActivity,如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.himi.Smshelper" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="15" 9 android:targetSdkVersion="17" /> 10 11 <application 12 android:allowBackup="true" 13 android:icon="@drawable/ic_launcher" 14 android:label="@string/app_name" 15 android:theme="@style/AppTheme" > 16 <activity 17 android:name=".MainActivity" 18 android:label="@string/app_name" > 19 <intent-filter> 20 <action android:name="android.intent.action.MAIN" /> 21 22 <category android:name="android.intent.category.LAUNCHER" /> 23 </intent-filter> 24 </activity> 25 26 <activity 27 android:name="com.himi.Smshelper.SmsActivity"> 28 29 </activity> 30 </application> 31 32 </manifest>
(4)这里的activity_sms.xml 和 item.xml 如下:
activity_sms.xml :
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <ListView 8 android:id="@+id/iv" 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" > 11 </ListView> 12 13 </LinearLayout>
item.xml :
1 <?xml version="1.0" encoding="utf-8"?> 2 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:textColor="#AA000000" 6 android:textSize="15sp" > 7 8 9 </TextView>
(5)运行效果如下:
当我们点击" 浏览选择短信 ",如下:
当我们点击第一个条目时候,如下:
(6)小结:
上面程序基本上完成了,两个界面直接的互相通信;
但是还是存在BUG,就是每当我们点击返回键,就会推出到上一次打开的界面,我们一直点多次返回键才能推出程序,这是因为我们直接每次都是startActivity这样不断开启新的页面,但是我们并没有关闭。
这样的用户体验是不好的,所以我们这里就需要优化这个BUG,下一讲会说明如何解决这个BUG。
转载于:https://www.cnblogs.com/hebao0514/p/4797489.html
Android(java)学习笔记164:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)...相关推荐
- Java学习笔记——Java6开发WebService进阶
在上文中,使用Java6做了一个最简单的WebService服务的实现,并通过Java6API发布了该服务. 在本文中,将看到如何使用Java6来做一个WebService服务,并如何使用Java6提 ...
- Java学习笔记5-1——多线程
目录 前言 核心概念 线程创建 继承Thread类 实现Runnable接口 上述两个方法小结 实现Callable接口 并发问题简介 静态代理模式 线程状态 线程停止(stop) 线程休眠(slee ...
- java学习笔记(二十八)——开发一个小项目(VMeeting3.0)
上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...
- java/android 设计模式学习笔记(6)---适配器模式
这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式.在我 ...
- java/android 设计模式学习笔记(7)---装饰者模式
这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是 ...
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
- Android:日常学习笔记(8)———探究UI开发(5)
Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...
- Java学习笔记项目三:开发团队调度软件(尚硅谷)
JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...
- java/android 设计模式学习笔记(8)---桥接模式
这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一.桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分 ...
最新文章
- 云计算服务需求促进边缘计算的应用与发展
- gin redis 链接不上_内存优化,Redis是如何实现的!
- Mysql bat脚本编写_第一次编写bat脚本
- 您真的需要instanceof吗?
- 使用自动机的Lucene新的邻近查询
- 堆排序算法的实现 (冒泡排序)
- 98k用计算机图片,98K (HandClap)_谱友园地_中国曲谱网
- Linux系统编程10:进程入门之系统编程中最重要的概念之进程进程的相关操作使用fork创建进程
- Linux—vi/vim全局替换
- 专科python应届生工资多少-Python最好的就业方向与就业岗位技能要求,能赚多少钱?...
- html博客音乐播放器代码大全,HTML博客音乐播放器代码大全
- java遍历map集合_Java 遍历Map集合
- 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(21):常用方阵函数的一些性质
- cad一直正在加载_cad一直加载打不开怎么办,cad打不开的四种解决办法
- VMVare 打不开磁盘xxx.vmdk
- 国内拉取 gcr.io 镜像(Google Kubernetes 镜像)
- 使用Python解数学方程
- Google需警惕苹果Apple TV的10大原因
- BUUCTF Misc 被劫持的神秘礼物
- java functionex_Atitit. atiJavaExConverter4js 新的特性
热门文章
- Chromium Embedded Framework中文文档之(基本使用)
- 函数指针及其的运用(上)——何为函数指针
- Java-Tomcat 5.5 下的JNDI
- CVPR 2020丨基于并行点检测和点匹配的单阶段实时HOI Detection方法
- EfficientDet:COCO 51.0 mAP!谷歌大脑提出目标检测新标杆
- MICCAI 2019 :纪录、风向与学术思考
- OpenCV开发团队开源计算机视觉标注工具CVAT
- 3D建模突然火起来了之后应该如何面对?
- c语言程序设计电子图书 汉诺塔,用C写的汉诺塔(hanoi)程序
- 计算机视觉,凉了?!