zoukankan      html  css  js  c++  java
  • android使用全局变量传递数据

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

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

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



     

    具体实现方法如下:

    一. 新建共享的全局变量

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

    Java代码  收藏代码
    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. }  

     

    二.配置AndroidMainifest.xml 

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

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

    三.调用全局变量

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

    Java代码  收藏代码
    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. public class MainActivity extends Activity {  
    17. private EditText edit = null;  
    18. private Button button = null;  
    19. @Override  
    20. protected void onCreate(Bundle savedInstanceState) {  
    21. super.onCreate(savedInstanceState);  
    22. setContentView(R.layout.activity_main);  
    23. edit = (EditText)findViewById(R.id.edit);  
    24. button = (Button)findViewById(R.id.btn_submit);  
    25. button.setOnClickListener(new OnClickListener() {  
    26.   
    27. @Override  
    28. public void onClick(View v) {  
    29. String result = edit.getText().toString();  
    30. //获得应用程序实例  
    31. WirelessApp app = (WirelessApp)getApplicationContext();  
    32. //给全局变量赋值  
    33. app.setUsername(result);  
    34. //启动另一个activity  
    35. Intent intent = new Intent(MainActivity.this, ResultActivity.class);  
    36. startActivity(intent);  
    37. }  
    38. });  
    39. }  
    40. }  

     四.调用全局变量的值

     

    Java代码  收藏代码
      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. }  
  • 相关阅读:
    如何阅读论文
    我的算法学习之路
    blazor wasm访问非本地的restful service
    ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码
    在ef core中使用postgres数据库的全文检索功能实战之中文支持
    在ef core中使用postgres数据库的全文检索功能实战
    .net core grpc单元测试
    asp.net core + entity framework core 多数据库类型支持实战
    asp.net core计划任务探索之hangfire+redis+cluster
    Keycloak & Asp.net core webapi 整合跳坑之旅
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4045632.html
Copyright © 2011-2022 走看看