




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安卓物业管理系统毕业设计II目录摘 要IAbstractII目录III1 引言12 设计要求13 方案论证13.1 Android客户端23.2 Web服务器23.3 数据库23.4 web服务端34 设计原理与实现34.1 android客户端34.1.1 Android介绍34.1.2 Android程序结构简介54.1.3 Android程序设计74.1.4 Android客户端UI设计74.1.5 Android程序模块设计84.1.6 Android软件Handler机制94.1.7 Android实现全局变量的保存104.1.8 Android软件功能截图114.2 Web模块 134.2.1 Web简介134.2.2 Web框架设计134.2.3 与Android客户端交互的设计144.2.4 Web应用的设计154.3 数据库的结构设计164.3 服务器175 测试176 总结20参考文献21附录221安卓主要代码221.1 客户端和服务端交互的工具类221.2 客户端主界面的activity231.3 自定义application262 web主要代码272.1 注册登录的服务代码272.2 底层实现代码29II1 引言随着3G信号的普及和4G网络兴起,以及智能手机的广泛应用。移动互联网为现代人们提供了越来越大的帮助。以android和IOS为首的移动操作系统在这一时代扮演了比较重要的角色。特别是android以它开源、开放的姿态,深受各大手机厂商和来自全世界的开发者的喜爱。在2014年底Google Play的数据统计在谷歌的应用商店里面大约有143万款android应用,而安卓也在这短短几年的时间里发展到了5.1,这足以证明android在目前的流行程度。在这143万应用里面包含了人们生活的各个方面,从衣食住行到社交娱乐再到炒股理财。尤其是现在流行的移动互联从线上到线下的一种O2O模式,使人们的生活更加的便捷。这种模式在不少传统行业碰撞出了前所未有的火花,比如在餐饮行业诞生了“饿了吗”还有“美团外卖”,在交通行业出现了“嘀嘀打车”和“快的打车”。所以O2O这种模式能够使某些传统的行业诞生新的活力。所以我以物业这一传统的行业做切入点,开发方便业主的移动app。使物业管理从线下走到线上。2 设计要求设计制作一款android应用程序要求如下:1、 能够实现客户端的注册和登陆功能;2、 实现物品报修功能;3、 可以通过Web程序接收到报修信息,并进行管理;扩展:1、工单评价,实现了客户对物业服务的评价功能;2、支付宝接口,实现在线付款;由于调用支付宝的接口需要申请认证,所以方案不可行。3 方案论证 通过分析,本次毕业设计是以android客户端作为核心,围绕着android客户端需要有服务器为客户端的某些功能提供服务支持,还需要有数据库存放服务器和安卓客户端产生的数据,所以该设计需要有安卓客户端、服务器、数据库、和web浏览器。其中数据库和服务器如果部署到外网的设备上,那么安卓客户端就可以通过手机信号、WIFI等方式实现对服务端的访问。但是本次设计的服务器和数据库都安装在本地的电脑上,所以安卓手机只能够通过数据线或者在同一网段下的WIFI来实现对本机服务器的访问。详细的设计方案如图1所示:图1 原理框图3.1 Android客户端方案一:采用国内主流安卓智能手机搭载的android 4.4。方案二:采用最新的安卓API android 5.0。本系统是为小区业主服务,主要面向的对象是国内的大众群体,也考虑到最新的版本可能会有一些bug,因此使用主流的android 4.4。3.2 Web服务器常用的Web服务器主要有Tomcat、BEA Weblogic等。方案一:采用Tomcat作为部署web服务的容器。Tomcat是由APache的Jakarta项目的一个核心项目。也是世界上流行的一个免费的web应用服务器。Tomcat最新的版本已经更新到8.0,并且支持jsp和servlet的规范。方案二:采用WebLogic是有美国Oracle公司提供的application server。主要用于开发、集成、部署大型web应用。由于本次毕业设计只需要很小的并发访问,所以选择方案一来实现。3.3 数据库方案一:采用免费小巧的mySQL 数据库,mySQL是一个关系型数据库管理系统,目前属于Oracle。在web方面mySQL最好用的关系型数据库之一。它有体积小、速度快、成本低,还开放源码这些显著的优点。有商业版和社区版两个版本。方案二:采用oracle10g数据库,是Oracle公司的一款关系型数据库管理系统,它在数据库领域一直是处于领先的地位,是世界上最流行的关系型数据库管理系统,具有可移植性好、使用方便、功能强大。由于本系统所面向的用户群不大,数据达不到百万级别,而且使用oracle是需要付费的,所以使用mysql完全足够,所以采用方案一。3.4 web服务端方案一:采用Http协议的方式实现客户端和服务端的信息交互,Http又叫超文本传输协议(HyperText Transfer Protocol),是互联网上使用最广泛的一种网络协议,所有的www文件都必须遵守这个标准。方案二:采用Socket的方式实现客户端和服务端的交互。Socket是网络上的两个程序通过一个双向的通信连接实现数据的交互,其中的一端就叫socket。通常可以使用socket这种方式为其他的程序提供接口或者服务。一个完整的socket需要指定地址、协议、端口。在计算机网络中实现通信一般都是基于TCP/IP协议进行的。Http在TCP运输层之上,而socket需要建立TCP,指定相关的协议才能实现通信。使用http进行数据的交互非常的方便,使用Http就能简单的实现C/S 之间的信息交互。所以本次毕业设计,数据的交互使用http来进行。4 设计原理与实现本系统选用的模块包括:android客户端,web服务端,web应用,数据库表结构设计。4.1 android客户端 此次的毕业设计的核心部分就是android客户端,客户通过手机安装该app,在手机上进行操作,就可以随时随地的发布自己的物业信息,极大的方便业主的生活。这次设计android版本最低支持4.0最高编译到4.4,是目前国内主流的安卓智能手机配置。4.1.1 Android介绍Android是目前世界上最流行的智能手机操作系统之一,拥有成千上万的忠实用户和来自全世界的开发者为它开发移动应用。Android 是一款包含操作系统、中介架构、应用程序的软件堆栈架构。自下而上,它的核心是Linux内核、Libraries (android 开发类库)、Android RunTime (android 运行时)、Application Framework (应用程序框架)、Applications(应用层)。图2 android 框架 类库从上图我们可以清楚的看到,安卓整体的一个框架。最底层的linux内核,在linux之上安卓集成了一些C/C+的类库,开发者可以通过应用程序框架来调用这些类库,实现相应的功能。比如: Surface Manager就是一个可以让开发者存取、显示系统及管理功能的一个库。3Dlibraries:主要依靠openGLES1.0规范所定义的3D绘图引擎,将硬件的3D功能做最佳的显示处理。SGL:主要处理2D方面的绘图引擎。SSL:中文名称是“安全套接层协议层”,SSL协议指定了一种在应用程序协议(如:HTTP)和TCP/IP协议之间提供数据安全性分层机制,为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机制。 Android运行时组件Android使用Google自己研发的运行时组件来执行程序。Android运行时组件包括:核心类库、DalVik虚拟机。每次安卓程序执行的时候就会把编写好的程序转换成字节码文件,由安卓虚拟机DalVik来执行字节码文件。 Android的应用构成和工作机制对于一个Android程序来说,是由Activity、IntentReceiver、Service、Content Provider 四个部分组成。Activity提供对用户的交互界面、IntentReceiver提供系统广播、Service是运行在后台的服务、Content Provider内容提供者。每一个安卓程序在编写的时候所有的组件必须在AndroidManifest.xml文件中进行配置,AndroidManifest.xml就相当于安卓程序的一个控制器,管理整个应用。图3 Android工作流程4.1.2 Android程序结构简介 一个完整的Android 程序必须有AndroidManifest.xml文件,该文件是Android程序的控制器。所有的组件都需要在这个文件中进行申明,才能使用。Android程序需要有一个UI界面来和用户进行交互,这个界面就是Activity。用户操作界面的时候会有跳到下一个界面、返回等操作。而一直在后台的Activity会消耗手机本来就很珍贵的内存,所以安卓设计了Activity的生命周期的机制。一个Activity有:onCreate()、onStart()、onResume()、onPause()、onDestroy()、onStop()、onRestart()这几种状态的相应方法。当一个界面刚创建的时候会调用该Activity的onCreate()方法和onStart(),当用户跳转到其他的界面的时候该Activity会调用onPause()方法暂停。当你的Activity是处于不可见的状态的时候就会调用onStop()方法,节省系统的资源。当你的Activity重新处于可见的状态的时候就会调用onResume()方法。当系统因为资源不够或者改程序退出的时候会调用onDestroy()方法,该界面已经完全摧毁,当你再次调用的时候,会重新执行onCReate()方法。Android API提供的Activity生命周期图如下:图4 Activity的生命周期在Android的界面Activity还需要有不同的组件,来完成不同的工作,它就是View。比如:显示使用的TextView、按钮Button、输入框EditTextView除了安卓官方提供的丰富的界面控件,还有一些个人定义的显示动画效果。程序为了能够和用户进行良好的交互,需要在不同的Activity之间跳转,并传递一些参数,这就需要Intent来实现,Intent是一个简单的消息对象。例如:Intent myIntent = new Intent(this,SecondActvit.class);myIntent.start();来实现当前也和SecondActvit之间的跳转。我们打开安卓手机的进程会看到一些程序一直在运行,这些程序就是服务。在程序中有一些内容是不需要直接和用户交互的,他们运行在后台。比如一些监听程序。Service服务就是运行在后台的一段代码,它可以有自己的进程。4.1.3 Android程序设计根据本次的毕业设计的需求,核心的功能就是实现客户端向服务端发送物业消息。围绕着这个功能展开,又需要用户的注册、登陆、查询历史报修消息等。 物业保修所以设计的软件功能概况如下: 客 户 端历史信息注册登录工单评价个人信息图5 Android客户端功能业主通过客户端注册,然后就可以凭借注册信息登陆。当需要物业的时候将所遇到的物业信息通过客户端发送给服务器。业主还可以在历史记录里面浏览自己的历史消息,通过评价功能将自己对物业服务的满意程度直接的反馈给物业公司,方便公司更好的为业主服务。4.1.4 Android客户端UI设计目前国内流行的程序,UI设计主要采用扁平化的方案。并且很多程序的菜单采用侧拉,划出的方式。所以我的设计采用,在GitHub开源的一个框架,Slidingmenu。设计出的菜单可以从左侧滑出。可以看到slidingmenu的设计方式相比于android原生的设计更加方便简洁。注册登陆报修历史关于首页账户密码登陆历史记录1历史记录2历史记录3 图6 Android客户端 UI 简图安卓界面的设计采用xml文件进行配置来设计Activity的界面属性。下面的代码就是一个xml配置的TextView控件。 4.1.5 Android程序模块设计首先该物业管理系统确定工程名为property,根据android程序开发流程建立该工程。为了便于代码的管理、维护和开发的方便,该工程下设置了多个包。分别用来保存用户界面、公用的工具类、存放java的bean对象。 表1 property工程的用户界面说明Activity名称说明xml文件MainActivity软件的首页Activity_main.xmlRegActivity注册界面regsiter.xmlLogin登录界面login.xmlRepairActivity物业报修界面repair.xmlHistoryActivity历史信息界面history.xmlRatHistoryActivity历史详细信息界面appraise.xmlAbout软件信息、联系作者about.xml表2 property工程的目录说明包名称说明perty主要存放用户界面Aperty.bean存放java的bean对象com.winter,mon存放工程用到的工具类在软件开发的过程中为了代码的可维护性和方便管理,经常会将代码按照一定的规则进行分层保存处理。比如在web应用中最常用的MVC三层的划分。下图就是我安卓程序的软件代码目录结构。图7 property 工程目录图表3 property res目录说明文件夹说明drawable-hdpi存放高分辨率的图片drawable-ldpi存放低分辨率的图片drawable-mdpi存放中分辨率的图片layout存放布局文件4.1.6 Android软件Handler机制应为修改UI的操作是线程不安全的所以android中规定:只能在主线程中修改界面UI。而联网的操作是非常占用资源的所以android又规定:在主线程中不能进行联网操作。所以如果想要实现客户端和服务端的通信,并根据反馈修改UI就需要使用Handler机制。Handler能够实现线程之间的通信,进行异步的消息处理。请看下面的代码:private Handler loginHandler = new Handler()public void handleMessage(Message msg) if(msg.arg1 = 1)MyApplication app = (MyApplication) getApplication();User u = app.getUser();Toast.makeText(getApplicationContext(), u.getName(), Toast.LENGTH_SHORT).show();proDialog.dismiss();startActivity(new Intent(Login.this,MainActivity.class);elseToast.makeText(getApplicationContext(), 登陆失败,请检查网络!, Toast.LENGTH_SHORT).show();proDialog.dismiss();当loginHandler.sendMessage()调用这段代码实现了handler接收到子线程执行登陆操作之后返回的参数对应的实现UI的更新,这个就是handler机制的具体使用方法。4.1.7 Android实现全局变量的保存在软件开发的过程中有时候需要使用能够在其他Activity访问的变量,比如用户登陆的时候就需要记录该用户的登陆信息,在整个应用的范围内都可以访问到这个信息。在Android中可以使用Application来实现。具体代码如下:public class MyApplication extends Applicationprivate User user; public User getUser() return user;public void setUser(User user) this.user = user;Override public void onCreate() / TODO Auto-generated method stub super.onCreate(); MyApplication继承了Application之后让user成为他的成员变量。在登陆的时候通过下面的代码就可以将user变成全局的变量。MyApplication app = (MyApplication) getApplication();app.setUser(user);使用的时候通过 app.getUser();方法就可以获得该用户的信息。4.1.8 Android软件功能截图具体的设计结果如图8-图13所示,截图是通过eclipse的Android布局Layout文件生成的,真机的测试截图在测试部分展示。 图8 客户端首页 图9 注册页面 图10 登陆页面图11 物业保修 图12 工单评价 图13 结束 4.2 Web模块 4.2.1 Web简介什么是Web,Web不仅仅只是网页,Web更像是一种规范。Web应用具体的表现形式就是超文本也就是网页。随着web的不断发展,现在的web应用形式也越来越多样化,性能也越来越强。比如最近很流行的微信公众平台就是移动web组成的,通过移动平台访问web服务。 4.2.2 Web框架设计本次毕业设计的web方面并不是主要的方面,所以应用主要有两方面的功能。首先需要为android客户端的程序提供服务支持。其次,需要查看管理客户端的用户和工单信息。确定web程序的名称为propertySer,为了软件代码的维护和规范,依旧是对代码做了分层和分包的处理。为了方便快速的开发和维护,本次web设计使用了一些集成的开发框架。Spring:包括spring 和springMVC 主要负责web工程的对象注入和hibernate的管理。具体使用的版本是spring 4.1.2。Hibernate:主要负责数据持久层的维护、事物的管理和与关系型数据库的关联。使用的版本是hibernate 4.3.7。EasyUI:是一款最近很流行的前段界面UI开发框架。负责网页的渲染和一些组件的集成。表4 propertySer工程的目录说明包名说明com.winter.bean存放工程的java对象mon存放工程的公用工具类com.winter.controller存放与android和网页交互的代码com.winter.dao存放底层的实现接口com.winter.dao.impl存放底层实现方法config存放web工程的配置文件图14 propertySer 目录截图4.2.3 与Android客户端交互的设计根据前面的设计,android客户端和服务端的交互使用Http协议进行,所以交互部分的代码除了使用springMVC 进行管理外,还需要HttpServlerRequest和HttpServletResponse对象进行接收消息和反馈。对于需要反馈的信息中有中文字符的使用Encoding进行编码在客户端解码完成。保证程序对于中文和英文的支持。 具体的代码如下:RequestMapping(value = reg.do)ResponseBodypublic void add(HttpServletRequest req,HttpServletResponse resp) throws IOExceptionboolean res1 = true;String name = EncodingUtil.bEncoding(req.getParameter(name);String sex = EncodingUtil.bEncoding(req.getParameter(sex);String phone = EncodingUtil.bEncoding(req.getParameter(phone);String addr = EncodingUtil.bEncoding(req.getParameter(addr);String pass = EncodingUtil.bEncoding(req.getParameter(pass);String email = EncodingUtil.bEncoding(req.getParameter(email);在安卓客户端访问 localhost:8080/propertySer/reg.do就可以访问到这个类。然后通过request.getParameter(xxx);就能够获取客户端传递过来的信息。以上不完整的代码实现了接受客户端发送的注册信息,并且将相应的数据封装在User 对象之内,使用Hibernate将数据写入数据库中。最后反馈给客户端注册成功的信息。4.2.4 Web应用的设计根据需求,web应用中需要对客户端发送的信息,进行管理。所以需要界面进行交互。本次设计所使用的 EasyUI 前段集成开发框架,集成提供了很多现成的组件。所以界面的设计就是中规中矩的企业级应用中常用的后台管理设计。用户管理工单管理物业管理系统内容图15 propertySer web设计用户管理模块:可以查看所有注册的用户信息,通过easyui的数据网格的控件显示客户的具体信息,方便管理人员管理。可以针对客户的姓名进行模糊查询。客户管理模块截图如下:图16 propertySer web用户康工单管理模块:首先可以查询所有已提交的工单。并且可以按照客户姓名和工单种类进行过滤。其次,还可以对已经完成的工单修改,使其状态变成已完成。模块的真实截图如下: 图17 propertySer web工单管理4.3 数据库的结构设计 数据库采用了mysql 5.6 ,因为在web设计中使用了hibernate所以,数据库的表结构设计交给了hibernate来完成。只要配置好bean对象就可以自动生成表。具体的例子如下:EntityTable(name = p_user)public class User private int id;private String name;private String sex;private String pass;private String phone;private String email;private String addr;IdGeneratedValue(strategy=GenerationType.IDENTITY)public int getId() return id;public void setId(int id) this.id = id;上面的代码就是用户表的配置,通过JPA注解和hibernate的配置,使java的对象和数据库的表对应关联起来。然后hibernate通过配置信息,识别该java对象。然后在数据库中自动生成相应的p_user表。图18 p_user表结构4.3 服务器根据前面的需求分析,服务器使用Tomcat。只要将服务端的程序部署到tomcat中就可以了。并且将Tomcat配置到计算机的8080端口。5 测试在软件开发的过程中,测试也是非常重要的一个环节。产品经过这个环节之后就要与客户见面了,可以说这个环节就是产品正式发布前的最后一个环节。在开发阶段一直都是使用模拟器来进行开发,测试。在最后的测试环节,打算使用DDMS使用真机来测试程序。本次测试使用的国产红米手机,具体手机信息如图19-图24所示: 图19 测试手机信息 图20 测试首页图21 测试登录 图22 测试工单评价 图23 测试历史信息 图24 测试报修时间控件6 总结这个安卓毕设也算是告一段落了。也是由于对安卓的兴趣,自己一点点的学习安卓的知识。一边学一般做,慢慢的摸索着完成了这个软件。软件制作的简陋而且粗糙,特别是界面的设计,原谅理工男那渣一样的审美吧。许多构想的功能因为一些原因没有实现出来。支付宝的接口不能调用,在昨天想到可以调用腾讯的接口实现第三方的登陆,但是申请的腾讯开发者账号还没有审批下来,希望在答辩之前可以有时间实现这个功能。通过这个软件的制作,也为我自己打开了一扇大门,扩展了自己编写软件的思路和经验。初步的了解了安卓的基础知识,锻炼了自己独立处理各种问题的能力。参考文献1GONG Lei,ZHOU Cong.Development and Research of Mobile Termination Application Based on AndroidJ. Computer And Modernization. 2008.8:155-162.2Shane CondeAndroid Wireless Application DevelopmentM. Addison-Wesley.2010:15-66.3Enck,W., Ongtang,M.,McDaniel,P. Understanding Android SecurityJ. Security & Privacy, IEEE.2009,7(1),P50-57 4Sandeep Kumar. Location Based Services using AndroidC. Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference:P1-5.5刘昌平,范明钰. Android手机的轻量级访问控制J.计算机应用研究,2010,7:32.6Enck,W., Ongtang,M.,McDaniel,P. Understanding Android SecurityJ. Security & Privacy, IEEE.2009,7(1):50-577 杨丰盛Android应用开发揭秘M. 北京:机械工业出版社, 20108 余志龙,陈昱勋,郑名杰Android SDK开发范例大全M. 北京:人民邮电出版社, 20109 张运芳Android 创赢路线与产品开发实战M. 北京:电子工业出版社, 201010 罗伟Android平台的即时通讯系统的研究与实现D硕士学位论文. 湖南师范大学,200811 Frank AblesonIntroduction to Android developmentEB/OL/developerworks/opensource/library/os-android-devel/index.html,2002 胡伟 Android系统架构及其驱动研究J 广州广播电视大学学报,2008.813 李苑基于Android移动平台的警务查询系统D硕士学位论文. 南昌大学,200914 郑建,贺超Android和Chrome的发展与未来J 移动通信 ,2010.315 张鹏中国企业为什么青睐androidJ 通信世界 2010.3附录1安卓主要代码1.1 客户端和服务端交互的工具类 /* * author winter * * 客户端和服务端交互的工具类 * *2015年2月14日12:28:45 */public class HttpUtil private static String serverUrl=09:8080/propertySer/; public static String getServerResult(String method,String msg) String result=; InputStreamReader in = null; try URL url=new URL(serverUrl+method);HttpURLConnection connection=(HttpURLConnection) url.openConnection();connection.setDoInput(true);connection.setDoOutput(true);connection.setUseCaches(false);connection.setRequestMethod(POST);connection.setRequestProperty(Content-Type,application/x-www-form-urlencoded);connection.setRequestProperty(Charset, utf-8);connection.setConnectTimeout(50000);/System.out.println(msg=+msg);connection.connect();DataOutputStream dop = new DataOutputStream(connection.getOutputStream();dop.writeBytes(msg);dop.flush();dop.close();in = new InputStreamReader(connection.getInputStream(),UTF-8);BufferedReader bufferedReader = new BufferedReader(in);StringBuffer strBuffer = new StringBuffer();String line = null;while (line = bufferedReader.readLine() != null) strBuffer.append(line);System.out.println(result=+strBuffer.toString();result=strBuffer.toString(); catch (MalformedURLException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); return result; 1.2 客户端主界面的activity/* * author winter * *2015年2月10日12:29:59 * *客户端主界面的activity */public class MainActivity extends Activity private SlidingMenu slidingMenu;private Button reg,login,history,repair,about,user;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);slidingMenu = new SlidingMenu(this); slidingMenu.setMode(SlidingMenu.LEFT); slidingMenu.setBehindOffsetRes(R.dimen.sliding_menu_offset); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); slidingMenu.setMenu(R.layout.slidingmenu); user = (Button) findViewById(R.id.userBut); reg = (Button) findViewById(R.id.regsiter); login = (Button) findViewById(R.id.loginBtn); history = (Button) findViewById(R.id.history); repair = (Button) findViewById(R.id.repair); about = (Button) findViewById(R.id.about); / 注册开始 reg.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubToast.makeText(getApplicationContext(), 注册, Toast.LENGTH_SHORT).show();startActivity(new Intent(MainActivity.this,RegActivity.class);); /登陆开始 login.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubToast.makeText(getApplicationContext(), 登陆, Toast.LENGTH_SHORT).show();startActivity(new Intent(MainActivity.this,Login.class);); repair.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubMyApplication app = (MyApplication) getApplication();User u = (User) app.getUser();if(u != null)startActivity(new Intent(MainActivity.this,RepairActivity.class);elseToast.makeText(getApplicationContext(), 请先登录, Toast.LENGTH_SHORT).show();); history.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubMyApplication app = (MyApplication) getApplication();User u = (User) app.getUser();if(u != null)startActivity(new Intent(MainActivity.this,HistoryActivity.class);elseToast.makeText(getApplicationContext(), 请先登录, Toast.LENGTH_SHORT).show();); user.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubMyApplication app = (MyApplication) getApplication();User u = (User) app.getUser();if(u != null)startActivity(new Intent(MainActivity.this,UserInfo.class);elseToast.makeText(getApplicationContext(), 请先登录,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济南市2024-2025学年八年级上学期语文期中模拟试卷
- 电解铝电解车间QC课件
- 电脑绣花设计知识培训班课件
- 高能量姿势课件
- 高考成语使用课件
- 电脑无法显示课件页面问题
- revit工程师考试及答案
- pets考试试题及答案
- 湖南省郴州市永兴县三校联考2023-2024学年四年级上学期期中科学试题(含答案)
- 电站典型故障课件
- 2025年浙江省慈溪市辅警招聘考试试题题库带答案详解
- 2025成人高考政治试题及答案专升本
- 安全生产事故分级标准
- 1.1.1观察周边环境中的生物 课件 人教版生物七年级上册
- 110kV变电站通信系统施工方案与技术要求
- 多系统联合仿真平台在燃气轮机设计与开发中的应用
- 工程造价专业成长路径与技能提升
- 1.1坚持改革开放 课件 统编版道德与法治 九年级上册
- 截肢后病人的护理
- 经皮冠脉介入治疗护理
- 中国近现代艺术概况
评论
0/150
提交评论