android使用全局变量传递数据
android中Application是用来保存全局变量的,在package创建的时候就存在了,到所有的activity都被destroy掉之后才会被释放掉。所以当我们需要全局变量的时候只要在application中去实现,通过调用Context的getApplicationContext或者Activity的getApplication方法来获得一个Application对象,就可以设置或读取全局变量的值。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
实例演试:如果把输入里的内容设置为全局变量,那么有下面两种情况。

具体实现方法如下:
一. 新建共享的全局变量
新建一个共享变量的类WirelessApp,需要继承Application
- package com.wirelessqa.testintent;
- import android.app.Application;
- /**
- * 继承application,设置全局变量
- * @author bixiaopeng 2013-2-18 上午11:32:19
- */
- public class WirelessApp extends Application {
- private String username;
- public String getUsername() {
- returnusername;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- }
二.配置AndroidMainifest.xml
在AndroidMainifest.xml中声明一下全局变量的类,这时Android就会建立一个全局可用的实例
在Application属性中设置android:name=".WirelessApp"
三.调用全局变量
可以在其它任何地方使用Content.getApplicationConext()来获取这个实例,再来获取全局变量
- package com.wirelessqa.testintent;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- private EditText edit = null;
- private Button button = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- edit = (EditText)findViewById(R.id.edit);
- button = (Button)findViewById(R.id.btn_submit);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- String result = edit.getText().toString();
- //获得应用程序实例
- WirelessApp app = (WirelessApp)getApplicationContext();
- //给全局变量赋值
- app.setUsername(result);
- //启动另一个activity
- Intent intent = new Intent(MainActivity.this, ResultActivity.class);
- startActivity(intent);
- }
- });
- }
- }
四.调用全局变量的值
- package com.wirelessqa.testintent;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- /**
- * 显示结果的Activity
- *
- * @author bixiaopeng 2013-2-18 上午11:29:50
- */
- public class ResultActivity extends Activity {
- private TextView text = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_result);
- //获得应用程序实例
- WirelessApp app = (WirelessApp) getApplicationContext();
- String result = app.getUsername();//取值
- text = (TextView) findViewById(R.id.txt_result);
- text.setText(result);
- }
- }
android使用全局变量传递数据的更多相关文章
- Android 使用全局变量传递数据
使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...
- activity之间通过全局变量传递数据
activity之间通过全局变量传递数据 一.简介 Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉 ...
- Android剪切板传递数据传递序列化对象数据
一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...
- Android 使用意图传递数据
使用意图传递数据之通用方式. 测试应用:当前页面点击button传递数据到一个新的页面显示在textview中. 首先在,mainActivity.xml文件中加入一个button按钮 <But ...
- Android与NativeC传递数据不正确问题
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 2.3.3 这两天一直在调试一个BUG,具体为通过 NativeC 来处理上层Android ...
- Android 通过Application 传递数据
</pre><pre> package com.example.ApplicationTest; import android.app.Application; /** * C ...
- android中使用Intent在activity之间传递数据
android中intent传递数据的简单使用: 1.使用intent传递数据: 首先将需要传递的数据放入到intent中 Intent intent = new Intent(MainActivit ...
- Android开发—— 传递数据
一:使用静态变量传递数据 (1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可: (2)静态变量传递数据,在主Activity中对目标Ac ...
- 【Android 复习】 : Activity之间传递数据的几种方式
在Android开发中,我们通常需要在不同的Activity之间传递数据,下面我们就来总结一下在Activity之间数据传递的几种方式. 1. 使用Intent来传递数据 Intent表示意图,很多时 ...
随机推荐
- SD卡 TF卡 接口引脚定义
- Go语言设计模式实践:组合(Composite)
关于本系列 这个系列首先是关于Go语言实践的.在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档.图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代 ...
- 要使用C#实现一个ActiveX控件
要使用C#实现一个ActiveX控件,需要解决三个问题: 1.使.NET组件能够被COM调用 2.在客户机上注册后,ActiveX控件能通过IE的安全认证 3.未在客户机上注册时,安装包能通过IE的签 ...
- B+树索引
结构上 B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引: B树中任何一个关键字只出现在一个结点中,而B+树中的关键 ...
- Android支付接入之Google In-app-Billing
原文链接:http://www.mobile-open.com/2016/966337.html 因为公司需要接入Google的应用内支付(即Google的in-app Billing V3),接入过 ...
- ANDROID打包错误ERROR:EXECUTION FAILED FOR TASK ´:APP:LINTVITALRELEASE´.
来自:http://dditblog.com/itshare_657.html 今天修改之前的项目之后.准备打包的时候.一起打包不了.一直提示有问题.错误是一些什么Strings.xml里面的一些信息 ...
- ASP.NET Core 1.0基础之应用启动
来源https://docs.asp.net/en/latest/fundamentals/startup.html ASP.NET 5 使得应用对每个http请求有完整的控制权.Startup类是程 ...
- Ant:Ant 入门
背景 自从有了 Maven 以后,Ant 视乎就不流行了,不过 Ant 还是有其应用场景的,Ant 的思想比较简洁,如下: 一个 project 包含多个 target(类似成员方法). 一个 tar ...
- 使用Vue.js制作仿Metronic高级表格(一)静态设计
Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables.本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库.jQuery做部分用户交互(弹窗). 使 ...
- OpenCV学习(3) OpenCV框架
OpenCV是一个开源的视觉库,其中包括很多计算机视觉的算法实现.在版本2.2以后,OpenCV采用C++特征的API,在1.x版本中,OpenCV函数都是传统的C语言形式. ...