android数据传递

一:用Intent传递数据
     1:传递
      String mydata = edt_data.getText().toString();
      Intent intent = new Intent();
      intent.setClass(MainActivity.this,OtherActivity.class);
      intent.putExtra("data", mydata);
      startActivity(intent);
    能够传递对象,如String,Int,若是是自定义对象,该类要继承Serializable;
   2:获取数据
      Bundle bundle = getIntent().getExtras();
      String s=bundle.getString("data");
二:静态传参
    用一个静态类来保存全部的静态参数。
    如:StateObject类中
     private state String name;
     当我要存数据的时候
      StateObject.name = "ssss";
      在其余的Activity中能够引用
      String s = StateObject.name;
  注:当Activity销毁时要把用了的数据也销毁,避免数据混乱。
三:粘贴板(不作介绍):不多使用
四:用Applications传参
   (1):建立一个类(MyApplication),该类继承Application
    public class MyApplication extends Application {
      private String name; 
      public String getName() {
        return name;
     }
      public void setName(String name) {
        this.name = name;
     }
  (2):在androidManifest.xml中对Application进行配置,告诉app在程序执行前运行MyApplication而不是Application
       在Application标签中添加
           android:name="com.example.hello.MyApplication"//为所创建的类的路径
   (3):对Application对象的使用(存值)
             Intent intent = new Intent(MainActivity.this,OtherActivity.class);
           MyApplication app=    (MyApplication) getApplication();
           app.setName(“张三”);
           startActivity(intent);
  (4):对Application对象的使用(取值)
        
       MyApplication app= (MyApplication) getApplication();
       String data = app.getName();
       Toast.makeText(OtherActivity.this, data, Toast.LENGTH_SHORT).show();  

-------------------------------------------------------------------------------------------------------------------------
     
      对Application的优化
  (1):对MyApplication类进行单例化。(在没有继承Activity类的类是没法使用getApplication()方法的)
        private   static  MyApplication instance;
        public   static  MyApplication getInstance() {
        return instance;
    }
        
      public void onCreate() {
        super.onCreate();
        this.instance =this;
     }  
  (2): 采用HashMap<Key,Value>存储数据,避免变量过多。
    
    private HashMap<String,Object> map = new HashMap<String,Object>();
    public HashMap<String, Object> getMap() {
        return map;
    }  
(3):存数据
        MyApplication app=    MyApplication. getInstance ();
                app.getMap().put("1""你好");
                app.getMap().put("2""很好");
                app.getMap().put("3""还好");
                app.getMap().put("4""很差");
(4):取数据
       String a=  (String) app.getMap().get("1");  
       String a=  (String) app.getMap().get("2");  
       String a=  (String) app.getMap().get("3");  
       String a=  (String) app.getMap().get("4");  
(5):在该Activity使用完数据后,要及时清除不要的数据,避免数据混乱
       protected void onDestroy() {        
        super.onDestroy();
        app.getMap().remove("1");
        app.getMap().remove("2");
        app.getMap().remove("3");
        app.getMap().remove("4");                           
    }  
相关文章
相关标签/搜索