ImageVerifierCode 换一换
格式:DOCX , 页数:109 ,大小:1.36MB ,
资源ID:10540664      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10540664.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android学习笔记二分析.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android学习笔记二分析.docx

1、Android学习笔记二分析笔记二Activity数据传递1.通过Intent传递数据1)基本类型传值=发送Intent intent = new Intent();intent.setAction(android.intent.action.CALL);/ 指定动作名称intent.addCategory(Intent.CATEGORY_DEFAULT); /传递参数intent.putExtra(name, XXX);intent.putExtra(age, 20);startActivity(intent);=接收Bundle bundle=getIntent().getExtras()

2、;int age=bundle.getInt(age);String name=bundle.getString(name);2)对象传值intent中的方法putExtra(key,类型)没有传递为具体实体类的参数,它需要通过序列化后才可以在putExtra方法中进行传值,其中有两种方式:Serializable接口 =putExtra(string name,Serializable value) Parcelable接口 =putExtra(string name,Parcelable value) 这两种方式除了创建实体类的时候不一样之外,在其它地方的调用和穿件完全一致。Seriali

3、zable方式:来自java APISerializable会将对象序列化到本地,是持久化的操作实例化对象:=发送UserInfo userInfo=new UserInfo();userInfo.setName(XXX);userInfo.setAge(20); Intent intent = new Intent();intent.setAction(android.intent.action.CALL); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.putExtra(userInfo,userInfo);startActivit

4、y(intent);=接收Bundle bundle=getIntent().getExtras();UserInfo userInfo=(UserInfo)bundle.get(userInfo); Parcelable方式:来自Android APIParcelable仅仅将对象序列号到内存中,这样可以提高效率。Activity之间的数据传递建议用Parcelable,这样可以大大提高效率。Parcelable不像Serializable那样序列化和反序列化已经写好,它需要自己处理。实体类:package cn.example.iphone;import android.os.Parcel

5、;import android.os.Parcelable;public class UserInfo implements Parcelable private String name ; private int age; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; Override public int des

6、cribeContents() return 0; /* 获取值* 注意:这是一个静态对象,并且 CREATOR是固定的,必须大写*/public static Parcelable.Creator CREATOR=new Creator() Override public UserInfo newArray(int size) / TODO Auto-generated method stub return null; /* * 将传递的成员变量进行反序列化 * 注意:1、反序列化的成员变量赋值顺序必须与序列号的成员变量顺序一样。 * 2、必须返回return */ Override pub

7、lic UserInfo createFromParcel(Parcel source) UserInfo userInfo=new UserInfo(); userInfo.getName(source.readString(); userInfo.getAge(source.readInt(); return userInfo; ; /* * 将需要传递的成员变量序列化(必须) */ Override public void writeToParcel(Parcel dest, int flags) dest.writeString(name); dest.writeInt(age); =

8、发送UserInfo userInfo=new UserInfo();userInfo.setName(XXX);userInfo.setAge(20); Intent intent = new Intent();intent.setAction(android.intent.action.CALL); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.putExtra(userInfo,userInfo);startActivity(intent);=接收Bundle bundle=getIntent().getExtras();User

9、Info userInfo=(UserInfo)bundle.get(userInfo); 2.通过静态变量传递数据Intent无法传递无法被序列化的对象,此时需要用静态变量传递数据。案例:从MainActivity跳转到OtherActivity页面:MainActivity:OtherActivity:如果,全局变量没有被回收,将会一直占用内存。3.通过剪切板传递数据这种情况一般在应用程序间传递数据比较常用,如从QQ中复制内容电话号码,粘贴到添加电话簿。4.通过全局变量传递数据Java Web四个作用域:Page Request Session Application其中,Applicat

10、ion域在应用程序的任何地方都可以使用和访问Android中的全局对象非常类似于Java Web中的Application域,除非Android应用程序清楚内存,否则全局对象将一直可以访问。案例:创建MainActivity、OtherActivity和MyApplicationMyApplication:package com.example.application; import java.util.HashMap;import android.app.Application;/应用程序启动时,最先创建的是Application,并执行onCreate方法public class MyAp

11、plication extends Application /通过Map集合保存需要传递的数据,这样可以减少成员变量的创建。 private HashMap map = new HashMap(); public HashMap getMap() return map; public void setMap(HashMap map) this.map = map; /Activity可以通过getApplication()方法获取Application对象。 /但是,并不是所有的类都有getApplication()方法获取Application对象,所以需要在MyApplication 内部

12、单例化instance供其它使用和访问。 private static MyApplication instance; public static MyApplication getInstance() return instance; Override public void onCreate() super.onCreate(); this.instance = this; MainActivity:public class MainActivity extends Activity private Button btn_tiaozhuan; Override protected void

13、 onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_tiaozhuan=(Button) findViewById(R.id.btn_tiaozhuan); btn_tiaozhuan.setOnClickListener(new OnClickListener() Override public void onClick(View v) Intent intent=new Intent(MainActivity.

14、this,OtherActivity.class);/方式一:Activity可以通过getApplication()直接获取Application/MyApplication app=(MyApplication)getApplication(); /方式二:通过在MyApplication里面封装的方法获取MyApplication MyApplication app=MyApplication.getInstance(); app.getMap().put(data1,王二); app.getMap().put(data2,张三); startActivity(intent); ); O

15、therActivity:public class OtherActivity extends Activity/方式一:Activity可以通过getApplication()直接获取Application/MyApplication app=(MyApplication)getApplication(); /方式二:获取MyApplication MyApplication app=MyApplication.getInstance(); Override protected void onCreate(Bundle savedInstanceState) super.onCreate(s

16、avedInstanceState); Log.d(OtherActivity,(String) app.getMap().get(data1); Log.d(OtherActivity,(String) app.getMap().get(data2); Override protected void onDestroy() super.onDestroy(); /清楚集合数据,否则占用内存 app.getMap().remove(data1); app.getMap().remove(data2); 配置: Activity返回数据创建三个Activity,分别是:MainActivity:

17、主体页面,接收弹出页面返回的数据页面描述:设置三个按钮通过点击弹出Activity,并接收处理返回的数据结果 按钮1和按钮2:弹出同一个ResultActivity页面,但是他们传递的请求码不同,用来标识按钮一和按钮二的数据处理。 按钮1/2和按钮3:分别弹出ResultActivity和NewActivity页面,这两个请求码,可以不区分,但是从两个页面传回了不同的结果码,这样就可以知道返回的数据来至哪个页面,并作出相应的处理。 ResultActivity:弹出页面,返回结果数据描述:用于测试同一个按钮弹出同一个页面返回数据处理(测试请求码)NewActivity:弹出页面,返回结果数据描

18、述:和ResultActivity搭配测试弹出不同页面返回数据处理(测试结果码)MainActivity页面:private EditText et_phoneNumber; private Button btn_selectLianxiRen; private EditText et_phoneNumber2; private Button btn_selectLianxiRen2; private EditText et_showContent; private Button btn_getContent; Override protected void onCreate(Bundle s

19、avedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /三个文本框用于赋值 et_phoneNumber = (EditText) findViewById(R.id.et_phoneNumber); et_phoneNumber2 = (EditText) findViewById(R.id.et_phoneNumber2); et_showContent = (EditText) findViewById(R.id.et_showContent); /按钮

20、一点击事件 btn_selectLianxiRen = (Button) findViewById(R.id.btn_selectLianxiRen); btn_selectLianxiRen.setOnClickListener(new OnClickListener() Override public void onClick(View v) Intent intent =new Intent(MainActivity.this, ResultActivity.class); / 第二个参数(resultCode-请求码) startActivityForResult(intent, 1)

21、; ); /按钮二点击事件 btn_selectLianxiRen2 = (Button) findViewById(R.id.btn_selectLianxiRen2); btn_selectLianxiRen2.setOnClickListener(new OnClickListener() Override public void onClick(View v) Intent intent = new Intent(MainActivity.this, ResultActivity.class); /第二个参数( resultCode-请求码) startActivityForResul

22、t(intent, 2); ); /按钮三点击事件 btn_getContent = (Button) findViewById(R.id.btn_getContent); btn_getContent.setOnClickListener(new OnClickListener() Override public void onClick(View v) Intent intent = new Intent(MainActivity.this, NewActivity.class); /第二个参数( resultCode-请求码) startActivityForResult(intent,

23、0); );/*所有Activity返回的数据结果都是onActivityResult方法接收并处理* requestCode:请求码用于标识请求源(请求码一般用于区分本页面不同按钮处理结果)* resultCode:结果码用于标识结果源(结果码一般用于区分Activity返回的处理结果)* 请求码和结果码就是一个标识作用,程序员自己设置,只要能区分就可以。* data:返回数据(Intent类型)*/Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) /必须对返回数据作出判

24、断,否则当Activity中直接点击返回按钮的时候,data值为null此时不做处理会报异常。 if (data = null) return;/获取返回数据 Bundle bundle = data.getExtras(); String phoneNumber = bundle.getString(phone);/判断请求码,可以知道是哪个按钮点击,并作出相应的处理 switch (requestCode) case 1: et_phoneNumber.setText(phoneNumber); break; case 2: et_phoneNumber2.setText(phoneNum

25、ber); break; /判断结果码,可以知道数据源来至哪里 if(resultCode=500) et_showContent.setText(bundle.getString(content); ResultActivity页面:public class ResultActivity extends Activity private TextView tv_phone1; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentVie

26、w(R.layout.activity_result); /按钮点击返回数据结果 tv_phone1=(TextView) findViewById(R.id.tv_phoneNumber1); tv_phone1.setOnClickListener(new OnClickListener() Override public void onClick(View v) Intent intent=new Intent(); intent.putExtra(phone,tv_phone1.getText().toString(); /第一个参数(resultCode-结果码) setResult

27、(0,intent); finish();/关闭(销毁)Activity ); NewActivity页面:public class NewActivity extends Activity private TextView tv_content; Override protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); /按钮点击返回数据结果 tv_content=(TextView) findViewById(R.id.tv_content); tv_content.setOnClickListener(new OnClickListener() Override public void onClick(View v)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1