一:用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");
}