Android使用全局变量(转)

转至http://blog.csdn.net/feiyangxiaomi/article/details/9966215

 

      开发时用到了的SDK类无法用Intent或者Bundle来传递,本来想用Parcelable接口或Serializable接口,但是要把传递对象中的所有对象也要实现,但是用的是别人的sdk,没办法,只能用全局变量,在网上找了两种方法,觉得Application比较方便,不过原文章写的挺通俗易懂的,就分享出来

      

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

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);
			}
		});
	}
}
 
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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值