本文转自: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. foreach获取访问元素的下标

    今天在用foreach循环的时候,要同时根据访问下标获取另一个list对象数据,之前想的方法是加一个变量i,然后每次i++,但是感觉这样不是很好!,后来发现这样也可以!举个简单的例子! foreach ...

  2. WeChat-小程序-tabbar

    WeChat-小程序-tabbar https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#%E5%85%A8%E ...

  3. 【01】CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径 向渐变)(转)

    CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径 向渐变).而我们今天主要是针对线性渐变来剖析其具体的用法.为了更好的应用 CSS3 ...

  4. Leetcode 123.买卖股票的最佳时机III

    买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你 ...

  5. noip模拟赛 小Y的问题

    [问题描述]有个孩子叫小 Y,一天,小 Y 拿到了一个包含 n 个点和 n-1 条边的无向连通图, 图中的点用 1~n 的整数编号.小 Y 突发奇想,想要数出图中有多少个“Y 字形”.一个“Y 字形” ...

  6. linux下安装并配置vim

    1.安装:sudo apt-get install vim-gtk  安装好后vim,并按“tab”键,可以看到vim的存在,则安装好2.设置更加人性化:sudo vim /etc/vim/vimrc ...

  7. [bzoj3668][Noi2014]起床困难综合症_暴力

    起床困难综合征 bzoj-3668 Noi-2014 题目大意:题目链接. 注释:略. 想法:Noi考这题...联赛T1难度.... 我们将每个门上的数二进制拆分. 发现:当前位的操作可能直接确定了当 ...

  8. cogs——1578. 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  9. Oracle中的 row_number() over (partition by order by ) 用法

    oracle 里面经常这样用 select col1,col2..., row_number() over (partition by colx order by coly) from table_n ...

  10. curl -O 下载文件

    curl -O 下载文件 学习了:http://blog.csdn.net/wulong710/article/details/53127606 curl -O http://a.b.c/a.tar ...