android使用全局变量传递数据
16lz
2021-01-23
android中Application是用来保存全局变量的,在package创建的时候就存在了,到所有的activity都被destroy掉之后才会被释放掉。所以当我们需要全局变量的时候只要在application中去实现,通过调用Context的getApplicationContext或者Activity的getApplication方法来获得一个Application对象,就可以设置或读取全局变量的值。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
实例演试:如果把输入里的内容设置为全局变量,那么有下面两种情况。
具体实现方法如下:
一. 新建共享的全局变量
新建一个共享变量的类WirelessApp,需要继承Application
Java代码- packagecom.wirelessqa.testintent;
- importandroid.app.Application;
- /**
- *继承application,设置全局变量
- *@authorbixiaopeng2013-2-18上午11:32:19
- */
- publicclassWirelessAppextendsApplication{
- privateStringusername;
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- }
二.配置AndroidMainifest.xml
在AndroidMainifest.xml中声明一下全局变量的类,这时Android就会建立一个全局可用的实例
在Application属性中设置android:name=".WirelessApp"
三.调用全局变量
可以在其它任何地方使用Content.getApplicationConext()来获取这个实例,再来获取全局变量
Java代码- packagecom.wirelessqa.testintent;
- importandroid.app.Activity;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
- publicclassMainActivityextendsActivity{
- privateEditTextedit=null;
- privateButtonbutton=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- edit=(EditText)findViewById(R.id.edit);
- button=(Button)findViewById(R.id.btn_submit);
- button.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- Stringresult=edit.getText().toString();
- //获得应用程序实例
- WirelessAppapp=(WirelessApp)getApplicationContext();
- //给全局变量赋值
- app.setUsername(result);
- //启动另一个activity
- Intentintent=newIntent(MainActivity.this,ResultActivity.class);
- startActivity(intent);
- }
- });
- }
- }
四.调用全局变量的值
Java代码- packagecom.wirelessqa.testintent;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.TextView;
- /**
- *显示结果的Activity
- *
- *@authorbixiaopeng2013-2-18上午11:29:50
- */
- publicclassResultActivityextendsActivity{
- privateTextViewtext=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_result);
- //获得应用程序实例
- WirelessAppapp=(WirelessApp)getApplicationContext();
- Stringresult=app.getUsername();//取值
- text=(TextView)findViewById(R.id.txt_result);
- text.setText(result);
- }
- }
更多相关文章
- Android中使用代码控制Wifi及数据连接网络开关
- Android WebView中的JavaScript代码使用
- Android Animation 高手必读 之一 Tweened Animations 代码实现
- 基于Service与ContentProvider的音乐播放实例!
- Android相机应用开发实例
- 当修改一些代码时,使用什么编译命令可以最有效率