本文转自:http://blog.csdn.net/feiyangxiaomi/article/details/9966215

在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对象语言和过程语言区别很大,不再是include就可以的。这里我写了使用全局变量的两种方法:

1.使用application来保存全局变量

这里没有太多理论性的东西,无非就是一些实际操作。

1.1定义Data类继承Application Data.class

  1. import android.app.Application;
  2. publicclass Data extends Application{
  3. private String b;
  4. public String getB(){
  5. returnthis.b;
  6. }
  7. publicvoid setB(String c){
  8. this.b= c;
  9. }
  10. @Override
  11. publicvoid onCreate(){
  12. b = "hello";
  13. super.onCreate();
  14. }
  15. }
import android.app.Application;

public class Data extends Application{
private String b; public String getB(){
return this.b;
}
public void setB(String c){
this.b= c;
}
@Override
public void onCreate(){
b = "hello";
super.onCreate();
}
}

1.2在manifest.xml中声明application

  1. android:name="com.animator1.Data" >
android:name="com.animator1.Data" >

1.3创建两个Activity

MainActivity.class

  1. publicclass MainActivity extends Activity {
  2. @Override
  3. protectedvoid onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. Button btn = (Button) this.findViewById(R.id.button1);
  7. final TextView txtview = (TextView) this.findViewById(R.id.main);
  8. final Data app = (Data)getApplication();
  9. txtview.setText(app.getB());
  10. btn.setOnClickListener(new View.OnClickListener() {
  11. @Override
  12. publicvoid onClick(View v) {
  13. // TODO Auto-generated method stub
  14. app.setB("no_hello");
  15. txtview.setText(app.getB());
  16. Intent intent = new Intent(MainActivity.this, secondActivity.class);
  17. startActivity(intent);
  18. }
  19. });
  20. }
  21. }
public class MainActivity extends Activity {

	@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) this.findViewById(R.id.button1);
final TextView txtview = (TextView) this.findViewById(R.id.main);
final Data app = (Data)getApplication();
txtview.setText(app.getB());
btn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
app.setB("no_hello");
txtview.setText(app.getB());
Intent intent = new Intent(MainActivity.this, secondActivity.class);
startActivity(intent);
}
});
}
}

secondActivity.class

  1. publicclass secondActivity extends Activity{
  2. @Override
  3. protectedvoid onCreate(Bundle savedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.second);
  6. Button btn = (Button) this.findViewById(R.id.button2);
  7. final TextView txtview = (TextView) this.findViewById(R.id.second);
  8. final Data app = (Data)getApplication();
  9. txtview.setText(app.getB());
  10. btn.setOnClickListener(new View.OnClickListener() {
  11. @Override
  12. publicvoid onClick(View v) {
  13. // TODO Auto-generated method stub
  14. app.setB("hello");
  15. txtview.setText(app.getB());
  16. Intent intent = new Intent(secondActivity.this, MainActivity.class);
  17. startActivity(intent);
  18. }
  19. });
  20. }
  21. }
public class secondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Button btn = (Button) this.findViewById(R.id.button2);
final TextView txtview = (TextView) this.findViewById(R.id.second);
final Data app = (Data)getApplication();
txtview.setText(app.getB());
btn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
app.setB("hello");
txtview.setText(app.getB());
Intent intent = new Intent(secondActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}

1.4运行程序   

说明:程序首先进入MainActivity.class中,获取Data中变量b的值,显示图1所示的界面hello,单击button后app.setB("no_hello"), 修改变量b的值。

跳转到secondActivity.class,获取Data中变量b的值,显示图2所示的界面no_hello,单击button后app.setB("hello"), 修改变量b的值。

跳转回MainActivity.class……  循环

2.使用普通的类Data.class来保存全局变量

方法和上面差不多。

1.1 定义Data.class

  1. publicclass Data{
  2. privatestatic String a ="feiyangxiaomi";
  3. publicstatic String getA() {
  4. return a;
  5. }
  6. publicstaticvoid setA(String a) {
  7. Data.a = a;
  8. }
  9. }
public class Data{
private static String a ="feiyangxiaomi"; public static String getA() {
return a;
} public static void setA(String a) {
Data.a = a;
}
}

1.2创建两个Activity

MainActivity.class

  1. publicclass MainActivity extends Activity {
  2. @Override
  3. protectedvoid onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. Button btn = (Button) this.findViewById(R.id.button1);
  7. final TextView txtview = (TextView) this.findViewById(R.id.main);
  8. txtview.setText(Data.getA());
  9. btn.setOnClickListener(new View.OnClickListener() {
  10. @Override
  11. publicvoid onClick(View v) {
  12. // TODO Auto-generated method stub
  13. Data.setA("no_feiyangxiaomi");
  14. Intent intent = new Intent(MainActivity.this, secondActivity.class);
  15. startActivity(intent);
  16. }
  17. });
  18. }
  19. }
public class MainActivity extends Activity {

	@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) this.findViewById(R.id.button1);
final TextView txtview = (TextView) this.findViewById(R.id.main);
txtview.setText(Data.getA());
btn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Data.setA("no_feiyangxiaomi");
Intent intent = new Intent(MainActivity.this, secondActivity.class);
startActivity(intent);
}
});
}
}

secondActivity.class

  1. publicclass secondActivity extends Activity{
  2. @Override
  3. protectedvoid onCreate(Bundle savedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.second);
  6. Button btn = (Button) this.findViewById(R.id.button2);
  7. final TextView txtview = (TextView) this.findViewById(R.id.second);
  8. txtview.setText(Data.getA());
  9. btn.setOnClickListener(new View.OnClickListener() {
  10. @Override
  11. publicvoid onClick(View v) {
  12. // TODO Auto-generated method stub
  13. Data.setA("feiyangxiaomi");
  14. Intent intent = new Intent(secondActivity.this, MainActivity.class);
  15. startActivity(intent);
  16. }
  17. });
  18. }
  19. }
public class secondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Button btn = (Button) this.findViewById(R.id.button2);
final TextView txtview = (TextView) this.findViewById(R.id.second);
txtview.setText(Data.getA());
btn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Data.setA("feiyangxiaomi");
Intent intent = new Intent(secondActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}

1.3运行程序                     

说明:程序首先进入MainActivity.class中,获取Data中变量b的值,显示图1所示的界面feiyangxiaomi,单击button后app.setB("no_feiyangxiaomi"), 修改变量b的值。

跳转到secondActivity.class,获取Data中变量b的值,显示图2所示的界面no_feiyangxiaomi,单击button后app.setB("feiyangxiaomi"), 修改变量b的值。

跳转回MainActivity.class……  循环

3.总结                                                                                       
    两种方法我测试的都可以的,大多数人应该更会偏向于第一种,毕竟Application是android专门提供的应用入口,并且运行周期贯穿整个程序运行。

[转]android使用全局变量的两种方法的更多相关文章

  1. android使用全局变量的两种方法

         在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对象语言和过程语言区别很大,不再是include就可以的.这里我写了使用全局变量的两种方法: 1.使用applicati ...

  2. Android 抗锯齿的两种方法

    Android 抗锯齿的两种方法 (其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))   在Android中,目前,我知道有两种出现锯齿 ...

  3. android emulator启动的两种方法详解

    android emulator启动的两种方法详解    转https://blog.csdn.net/TTS_Kevin/article/details/7452237 对于android学习者,模 ...

  4. Android访问WebService的两种方法

    首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.详细见:http://baik ...

  5. (转)Android创建桌面快捷方式两种方法

    [IT168技术]Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还 ...

  6. Android apk签名的两种方法

    编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 为了保证 ...

  7. android 实现分享功能两种方法

    当我想做一个智能的记事本的时候,我就在尝试自己写一组分享功能.后来才知道,原来每个社交软件中都有自己的分享接口. 这就大大减少了我们的代码量了. 第一种方法:特点--简单 package com.ex ...

  8. 解决android 大图OOM的两种方法

    最近做程序中,需要用到一张大图.这张图片是2880*2180大小的,在我开发所用的华为3C手机上显示没有问题,但是给米3装的时候,一打开马上报OOM错误.给nexus5装,则是图片无法出来,DDMS中 ...

  9. Android全屏的两种方法

    在开发中我们经常需要把我们的应用设置为全屏,这里我所知道的有俩中方法,一中是在代码中设置,另一种方法是在配置文件里改! 一.在代码中设置: [java] view plain copy package ...

随机推荐

  1. Cmake的介绍和使用 Cmake实践

    Cmake的介绍和使用 Cmake实践http://www.cppblog.com/Roger/archive/2011/11/17/160368.html

  2. C. Day at the Beach

    codeforces 599c C. Day at the Beach One day Squidward, Spongebob and Patrick decided to go to the be ...

  3. idea 类图显示

    不得不说idea java开发的神器啊,免去了自己画图的很多工作量. 打开类图快捷键:Ctrl+Alt+Shift+U

  4. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes

                                                        D. Prefixes and Suffixes You have a string s = s ...

  5. 纯JSP实现简单微信开发后台

    %@ page import="java.net.*" % %@ page import="java.math.*" % %@ page import=&quo ...

  6. Mcrouter-基于Memcached协议的缓存层流量管理工具(Memcached集群的另一个选择)(转)

    Mcrouter 是一个基于Memcached协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求.近日,Facebook开放了Mcrouter的源代码, ...

  7. python 除法总返回浮点

    python 除法总返回浮点,要返回整型需要用//: print(type(4/2),type(4//2)) #<class 'float'> <class 'int'>

  8. wpf slider进度条的样式模板,带有进度颜色显示

    效果图: 仅仅需在前台加上这段代码就可以: <UserControl.Resources> <!--笔刷--> <LinearGradientBrush x:Key=&q ...

  9. 在InternetExplorer.Application中显示本地图片

    忘记了,喜欢一个人的感觉 Demon's Blog  »  程序设计  »  在InternetExplorer.Application中显示本地图片 « 对VBS效率的再思考——处理二进制数据 Wo ...

  10. hdoj 4925 Apple tree 【最小割】

    题目:pid=4925">hdoj 4925 Apple tree 来源:2014 Multi-University Training Contest 6 题意:给出一个矩阵,然后每一 ...