在android中如何使用全局变量


本文章转自http://blog.csdn.net/wirelessqa/article/details/8589230,作者为码农老毕,感觉很有用,特转载到这个地方。


android中Application是用来保存全局变量的,在package创建的时候就存在了,到所有的activity都被destroy掉之后才会被释放掉。所以当我们需要全局变量的时候只要在application中去实现,通过调用Context的getApplicationContext或者Activity的getApplication方法来获得一个Application对象,就可以设置或读取全局变量的值。

启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。

实例演试:如果把输入里的内容设置为全局变量,那么有下面两种情况


具体实现方法如下:

一. 新建共享的全局变量

新建一个共享变量的类WirelessApp,需要继承Application


  1. package com.wirelessqa.testintent;  
  2. import android.app.Application;  
  3. /** 
  4.  
  5.  * 继承application,设置全局变量 
  6.  
  7.  * @author bixiaopeng 2013-2-18 上午11:32:19 
  8.  
  9.  */  
  10.   
  11. public class WirelessApp extends Application {  
  12.   
  13. private String username;  
  14.   
  15.   
  16. public String getUsername() {  
  17. returnusername;  
  18. }  
  19.   
  20.   
  21. public void setUsername(String username) {  
  22. this.username = username;  
  23. }  
  24.   
  25.   
  26. }  
package com.wirelessqa.testintent;
import android.app.Application;
/**

 * 继承application,设置全局变量

 * @author bixiaopeng 2013-2-18 上午11:32:19

 */

public class WirelessApp extends Application {

private String username;


public String getUsername() {
returnusername;
}


public void setUsername(String username) {
this.username = username;
}


}

 

二.配置AndroidMainifest.xml 

在AndroidMainifest.xml中声明一下全局变量的类,这时Android就会建立一个全局可用的实例

在Application属性中设置android:name=".WirelessApp"


三.调用全局变量

可以在其它任何地方使用Content.getApplicationConext()来获取这个实例,再来获取全局变量



  1. package com.wirelessqa.testintent;  
  2.   
  3. import android.app.Activity;  
  4.   
  5. import android.content.Intent;  
  6.   
  7. import android.os.Bundle;  
  8.   
  9. import android.view.View;  
  10.   
  11. import android.view.View.OnClickListener;  
  12.   
  13. import android.widget.Button;  
  14.   
  15. import android.widget.EditText;  
  16.   
  17.   
  18.   
  19. public class MainActivity extends Activity {  
  20.   
  21. private EditText edit = null;  
  22. private Button button = null;  
  23.   
  24.   
  25. @Override  
  26. protected void onCreate(Bundle savedInstanceState) {  
  27. super.onCreate(savedInstanceState);  
  28. setContentView(R.layout.activity_main);  
  29. edit = (EditText)findViewById(R.id.edit);  
  30. button = (Button)findViewById(R.id.btn_submit);  
  31. button.setOnClickListener(new OnClickListener() {  
  32.   
  33. @Override  
  34. public void onClick(View v) {  
  35. String result = edit.getText().toString();  
  36. //获得应用程序实例  
  37. WirelessApp app = (WirelessApp)getApplicationContext();  
  38. //给全局变量赋值  
  39. app.setUsername(result);  
  40. //启动另一个activity  
  41. Intent intent = new Intent(MainActivity.this, ResultActivity.class);  
  42. startActivity(intent);  
  43. }  
  44. });  
  45. }  
  46.   
  47.   
  48. }  
package com.wirelessqa.testintent;

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;

import android.widget.EditText;



public class MainActivity extends Activity {

private EditText edit = null;
private Button button = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText)findViewById(R.id.edit);
button = (Button)findViewById(R.id.btn_submit);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
String result = edit.getText().toString();
//获得应用程序实例
WirelessApp app = (WirelessApp)getApplicationContext();
//给全局变量赋值
app.setUsername(result);
//启动另一个activity
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
startActivity(intent);
}
});
}


}

 

四.调用全局变量的值



  1. package com.wirelessqa.testintent;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.widget.TextView;  
  6.   
  7. /** 
  8.  * 显示结果的Activity 
  9.  *  
  10.  * @author bixiaopeng 2013-2-18 上午11:29:50 
  11.  */  
  12. public class ResultActivity extends Activity {  
  13.   
  14.     private TextView text = null;  
  15.   
  16.     @Override  
  17.     protected void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.activity_result);  
  20.         //获得应用程序实例  
  21.         WirelessApp app = (WirelessApp) getApplicationContext();  
  22.         String result = app.getUsername();//取值  
  23.         text = (TextView) findViewById(R.id.txt_result);  
  24.         text.setText(result);  
  25.     }  
  26.   
  27. }  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值