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

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

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

1.1定义Data类继承Application Data.class

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

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

1.3创建两个Activity

MainActivity.class

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

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

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

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

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专门提供的应用入口,并且运行周期贯穿整个程序运行。

最新文章

  1. YYModel 源码解读(二)之NSObject+YYModel.h (5)
  2. 使用注解方式定义和配置aop
  3. 【转载】利用shell脚本获取一个文件的绝对路径readlink
  4. python tools: iPython Notebook
  5. Eclipse中WEB项目自动部署到Tomcat
  6. jupyterhub
  7. hdu 4005 边连通度与缩点
  8. [转]单例模式与静态变量在PHP中
  9. 201521123100 《Java程序设计》第6周学习总结
  10. Windows安装和使用fftw
  11. iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用
  12. [Swift]LeetCode969.煎饼排序 | Pancake Sorting
  13. 解决同一页面中两个iframe互相调用jquery,js函数
  14. PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想
  15. Python集合框架
  16. nmon for Linux & Java
  17. 设计模式 (二)——观察者模式(Observer,行为型)
  18. java ----> java.lang.NoClassDefFoundError
  19. 文字在线转图片二维码的公用API接口
  20. Mysql_游标

热门文章

  1. spring拦截器的定义
  2. poj2175
  3. poj3308
  4. Linux学习之chage命令
  5. 关于XPath的基本语法
  6. php基础教程笔记
  7. Apache配置支持include
  8. Spring Boot MyBatis 连接数据库
  9. bootstrap 导航栏
  10. VC中使用GetModuleFileName获取应用程序路径