• activity之间通过全局变量传递数据


    activity之间通过全局变量传递数据

    一、简介

    Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉Main方法应该是封装在这个里面的。 

    activity中传递数据主要用intent方式和全局变量方式。

    二、使用步骤

    1、新建MyApplication类继承Application类

    public class MyApplication extends Application

    继承之后MyApplication类就是全局的了

    2、在传输数据页面调用MyApplication类并生成数据

    MyApplication app=(MyApplication) getApplication();

    app.setName("fry");
    app.setAge(22);

    3、在接收数据页面调用MyApplication类并输出数据

    MyApplication app=(MyApplication) getApplication();

    tv_answer.setText("app:" + app );

    4、在AndroidManifest.xml配置文件中添加MyApplication类的Android启动配置

    android:name="activityGlobelVariable.MyApplication"

    5、大功告成

    三、具体代码实例

    代码中进行了两次优化:

    一是对MyApplication类实现了单例化模式,便于在没有继承Activity的类里面调用

    调用:

    MyApplication app = MyApplication.getInstance();

    二是对于传输多组数据,使用了HashMap

    private HashMap<String, Object> map=new HashMap<String, Object>();

    结果图:

    activityGlobelVariable.MyApplication

      1 package activityGlobelVariable;
      2 
      3 import java.util.HashMap;
      4 
      5 import android.app.Application;
      6 
      7 public class MyApplication extends Application{
      8     
      9     
     10     //也可以用hashMap来代替这些私有变量
     11     private HashMap<String, Object> map=new HashMap<String, Object>();
     12             
     13     
     14     private String name;
     15     private int age;
     16     
     17     
     18     
     19     
     20     
     21     public HashMap<String, Object> getMap() {
     22         return map;
     23     }
     24 
     25     public void setMap(HashMap<String, Object> map) {
     26         this.map = map;
     27     }
     28 
     29 
     30 
     31 
     32 
     33 
     34 
     35 
     36 
     37 
     38 
     39     private static MyApplication instance=null;
     40 
     41     public static MyApplication getInstance(){
     42         return instance;
     43     }
     44     
     45     public String getName() {
     46         return name;
     47     }
     48 
     49 
     50 
     51     public void setName(String name) {
     52         this.name = name;
     53     }
     54     
     55     
     56 
     57 
     58     public int getAge() {
     59         return age;
     60     }
     61 
     62 
     63 
     64     public void setAge(int age) {
     65         this.age = age;
     66     }
     67     
     68     
     69 
     70 
     71     public MyApplication() {
     72         super();
     73     }
     74 
     75 
     76 
     77     public MyApplication(String name, int age) {
     78         super();
     79         this.name = name;
     80         this.age = age;
     81     }
     82 
     83 
     84 
     85     @Override
     86     public void onCreate() {
     87         // TODO Auto-generated method stub
     88         super.onCreate();
     89         this.instance=this;
     90     }
     91 
     92     
     93 
     94     
     95 
     96     
     97 
     98     
     99 
    100 
    101 
    102     @Override
    103     public String toString() {
    104         return "MyApplication [name=" + name + ", age=" + age + "]";
    105     }
    106     
    107     
    108     
    109     
    110 }

    activityGlobelVariable.MainActivity

     1 package activityGlobelVariable;
     2 
     3 
     4 
     5 
     6 import com.example.activityGlobelVariable.R;
     7 
     8 import android.app.Activity;
     9 import android.content.Intent;
    10 import android.os.Bundle;
    11 import android.view.View;
    12 import android.view.View.OnClickListener;
    13 import android.widget.Button;
    14 
    15 
    16 
    17 public class MainActivity extends Activity{
    18     private Button btn_openActivty;//创建一个button对象
    19     MyApplication app = MyApplication.getInstance();
    20      protected void onCreate(Bundle savedInstanceState) {
    21             super.onCreate(savedInstanceState);//父类操作
    22             setContentView(R.layout.activity_main);//引入名为activity_main的界面
    23             btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id为btn_openActivity的button
    24             btn_openActivty.setOnClickListener(new OnClickListener() {//设置button点击监听
    25                 
    26                 @Override
    27                 public void onClick(View v) {//onclick事件
    28                     // TODO Auto-generated method stub
    29                     Intent intent=new Intent(MainActivity.this,Activity01.class);//初始化intent
    30                     //Application域的访问
    31                     //MyApplication app=(MyApplication) getApplication();
    32                     app.setName("fry");
    33                     app.setAge(22);
    34                     
    35                     //HashMap的应用
    36                     app.getMap().put("data1", "data1");
    37                     app.getMap().put("data2", 2.2);
    38                     startActivity(intent);//打开activity
    39                 }
    40             });
    41         }
    42      @Override
    43     protected void onDestroy() {
    44         // TODO Auto-generated method stub
    45         super.onDestroy();
    46         app.getMap().remove("data1");
    47         app.getMap().remove("data2");
    48     }
    49 }

    activityGlobelVariable.Activity01

    package activityGlobelVariable;
    
    import com.example.activityGlobelVariable.R;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class Activity01 extends Activity {
        private static final MyApplication MyApplication = null;
        private TextView tv_answer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity01);
            tv_answer = (TextView) findViewById(R.id.tv_answer);
            /*
             * getApplication()是Activity类里面的方法,别的类没有
             * 因为MyApplication继承了Application,是全局的 在配置文件里面要配MyApplication
             * MyApplication app=(MyApplication) getApplication();
             * 上面这句话就是访问调用MyApplication
             */
            // MyApplication app=(MyApplication) getApplication();
            MyApplication app = MyApplication.getInstance();
    
            // HashMap的应用
    
            String s1 = (String) app.getMap().get("data1");
            double d1 = (Double) app.getMap().get("data2");
            tv_answer.setText("app:" + app + "
    s1:" + s1 + "
    d1:" + d1);
        }
    }

    /activityGlobelVariable/AndroidManifest.xml

     1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     2     package="com.example.activityGlobelVariable"
     3     android:versionCode="1"
     4     android:versionName="1.0" >
     5 
     6     <uses-sdk
     7         android:minSdkVersion="8"
     8         android:targetSdkVersion="19" />
     9 
    10     <application
    11         android:name="activityGlobelVariable.MyApplication"
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             android:name="activityGlobelVariable.MainActivity"
    18             android:label="@string/app_name" >
    19             <intent-filter>
    20                 <action android:name="android.intent.action.MAIN" />
    21 
    22                 <category android:name="android.intent.category.LAUNCHER" />
    23             </intent-filter>
    24         </activity>
    25         <activity android:name="activityGlobelVariable.Activity01" android:exported="true"></activity>
    26     </application>
    27 
    28 </manifest>
  • 相关阅读:
    UITableViewCell出现动画
    Block简单使用
    Storyboard可视化编程详解
    布局案例
    WebStorm-快捷键
    盒模型布局相关-基础与语法
    多线程编程-003-NSOPeration
    linux安装redis 和 使用
    mui iOS云打包修改权限提示语
    vue 合成图片
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7266504.html
Copyright © 2020-2023  润新知