activity之间通过全局变量传递数据
activity之间通过全局变量传递数据
一、简介
Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉Main方法应该是封装在这个里面的。
activity中传递数据主要用intent方式和全局变量方式。
二、使用步骤
1、新建MyApplication类继承Application类
public class MyApplication extends Application
继承之后MyApplication类就是全局的了
2、在传输数据页面调用MyApplication类并生成数据
MyApplication app=(MyApplication) getApplication();
app.setName("fry");
app.setAge(22);
3、在接收数据页面调用MyApplication类并输出数据
MyApplication app=(MyApplication) getApplication();
tv_answer.setText("app:" + app );
4、在AndroidManifest.xml配置文件中添加MyApplication类的Android启动配置
android:name="activityGlobelVariable.MyApplication"
5、大功告成
三、具体代码实例
代码中进行了两次优化:
一是对MyApplication类实现了单例化模式,便于在没有继承Activity的类里面调用
调用:
MyApplication app = MyApplication.getInstance();
二是对于传输多组数据,使用了HashMap
private HashMap<String, Object> map=new HashMap<String, Object>();
结果图:
activityGlobelVariable.MyApplication
- package activityGlobelVariable;
- import java.util.HashMap;
- import android.app.Application;
- public class MyApplication extends Application{
- //也可以用hashMap来代替这些私有变量
- private HashMap<String, Object> map=new HashMap<String, Object>();
- private String name;
- private int age;
- public HashMap<String, Object> getMap() {
- return map;
- }
- public void setMap(HashMap<String, Object> map) {
- this.map = map;
- }
- 39 private static MyApplication instance=null;
- 40
- 41 public static MyApplication getInstance(){
- 42 return instance;
- 43 }
- 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;
- }
- public MyApplication() {
- super();
- }
- public MyApplication(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
- @Override
- 86 public void onCreate() {
- 87 // TODO Auto-generated method stub
- 88 super.onCreate();
- 89 this.instance=this;
- 90 }
- @Override
- public String toString() {
- return "MyApplication [name=" + name + ", age=" + age + "]";
- }
- }
activityGlobelVariable.MainActivity
- package activityGlobelVariable;
- import com.example.activityGlobelVariable.R;
- 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;
- public class MainActivity extends Activity{
- private Button btn_openActivty;//创建一个button对象
- MyApplication app = MyApplication.getInstance();
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);//父类操作
- setContentView(R.layout.activity_main);//引入名为activity_main的界面
- btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id为btn_openActivity的button
- btn_openActivty.setOnClickListener(new OnClickListener() {//设置button点击监听
- @Override
- public void onClick(View v) {//onclick事件
- // TODO Auto-generated method stub
- Intent intent=new Intent(MainActivity.this,Activity01.class);//初始化intent
- //Application域的访问
- //MyApplication app=(MyApplication) getApplication();
- app.setName("fry");
- app.setAge(22);
- //HashMap的应用
- app.getMap().put("data1", "data1");
- app.getMap().put("data2", 2.2);
- startActivity(intent);//打开activity
- }
- });
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- super.onDestroy();
- app.getMap().remove("data1");
- app.getMap().remove("data2");
- }
- }
activityGlobelVariable.Activity01
- package activityGlobelVariable;
- import com.example.activityGlobelVariable.R;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- public class Activity01 extends Activity {
- private static final MyApplication MyApplication = null;
- private TextView tv_answer;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity01);
- tv_answer = (TextView) findViewById(R.id.tv_answer);
- /*
- * getApplication()是Activity类里面的方法,别的类没有
- * 因为MyApplication继承了Application,是全局的 在配置文件里面要配MyApplication
- * MyApplication app=(MyApplication) getApplication();
- * 上面这句话就是访问调用MyApplication
- */
- // MyApplication app=(MyApplication) getApplication();
- MyApplication app = MyApplication.getInstance();
- // HashMap的应用
- String s1 = (String) app.getMap().get("data1");
- double d1 = (Double) app.getMap().get("data2");
- tv_answer.setText("app:" + app + "\ns1:" + s1 + "\nd1:" + d1);
- }
- }
/activityGlobelVariable/AndroidManifest.xml
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.activityGlobelVariable"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="19" />
- <application
- android:name="activityGlobelVariable.MyApplication"
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="activityGlobelVariable.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="activityGlobelVariable.Activity01" android:exported="true"></activity>
- </application>
- </manifest>
activity之间通过全局变量传递数据的更多相关文章
- Activity之间使用intent传递大量数据带来问题总结
转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405 Activity之间使用Parcel传递大量数据产生的问题. Activity ...
- Android 使用全局变量传递数据
使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...
- activity之间參数传递&&获取activity返回值&&activity生命周期
Activity之间參数传递 A activity想将參数传给B activity时能够利用Intent将消息带过去 Intent intent = new Intent(this,BActivity ...
- android第一行代码-3.activity之间的调用跟数据传递
前面两节所有应用都是同一个activity中的,是时候讲activity之间交互的操作了,此后会涉及到intent这个概念,这也算一个新的里程碑开始. 主要内容包括intent的使用,以及activi ...
- 37.Activity之间的转换以及数据的传递(Intent)学习
Intent简介: 在一个Androi ...
- Android教程 -04 启动其它Activity,静态工厂设计模式传递数据
视频建议采用超清模式观看, 欢迎点击订阅我的优酷 意图 Intent 一个应用程序肯定不只有一个界面,如何切换到其它界面,只时候就需要启动其它的Activity.启动Activity有多种方式.我在这 ...
- 多个Activity之间的切换与数据交互
总结 两个activity之间切换我概括的分为两步: 1. 代码实现切换操作.2.配置中声明另外一个acitivity! 1. 代码实现切换操作 显示定义一个intent 对象,Intent 这个类的 ...
- [Android] Activity间切换,传递数据
前面照着android系统的裁剪图片的功能自己写了一个相似的工具.功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢? 其实这个也很简单了,就是inte ...
- android使用全局变量传递数据
android中Application是用来保存全局变量的,在package创建的时候就存在了,到所有的activity都被destroy掉之后才会被释放掉.所以当我们需要全局变量的时候只要在appl ...
随机推荐
- 前端 javascript 数据类型 布尔类型
python 是大写 True javascript 是小写 true false 也是 布尔类型仅包含真假,与Python不同的是其首字母小写. == 比较值相等 != 不等于 ...
- 0602-Zuul构建API Gateway-Zuul Http Client、cookie、header
一.Zuul Http Client zuul使用的默认HTTP客户端现在由Apache HTTP Client支持,而不是已弃用的Ribbon RestClient.要使用RestClient或使用 ...
- 简明python教程十----python标准库
import sys def readfile(filename): 'Print a file to the standard output.' f=file(filename) while Tru ...
- SpringMVC-SimpleDEMO
本博文主要将如何配置一个简单的SpringMVC的DEMO,由上一讲的SpringMVC工作流程来看,配置一个SpringMVC的步骤是简单而清晰的. 一.引入SpringMVC所需依赖 < ...
- Mac Outlook邮箱MicrosoftExchange邮箱快满了,请减小邮箱大小。
这两天我的Mac电脑中的Exchange总是收到公司的邮箱发来的[存储空间不足的告警邮件] MicrosoftExchange329e71ec88ae4615bbc36ab6ce41109e@your ...
- 三张图看遍Linux性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg在最近的 LinuxCon NA 2014 大 ...
- cocos2dx 3.x HttpRequest GET获取数据
.h文件 #include "network/HttpClient.h" //包含头文件 // GET 函数 void createGetHttp(); void getHttp_ ...
- TOSCA自动化测试工具--打开已存在的Projects
1.刚login账号的界面 2.找到左下角Browse,找到文件路径,选择文件,打开 3.展示已打开的project 4.这个页面上便可进行自己想要的操作 5.关闭projects,最下面状态栏进行有 ...
- ABP官方文档翻译 1.3 模块系统
ABP模块系统 介绍 模块定义 生命周期方法 PreInitialize Initialize PostInitialize Shutdown 模块依赖 插件系统 ASP.NET Core ASP.N ...
- Django学习笔记之CBV和FBV
FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV CBV(class base v ...