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");                           
    }  
相關文章
相關標籤/搜索