Re: [問題] 不同頁面傳遞資料

作者: givemepass (λ)   2014-10-04 08:46:15
※ 引述《MonruTsai (Frank)》之銘言:
: 大家好,我想請問個問題,
: 單純兩頁之間頁面切換及傳資料我有把它寫出來,就是利用bundle跟intent,
: 那如果是第一頁的資料,要傳到第五頁在畫面顯示,但按button要跳到第二頁,
: 這樣該怎麼做,因為bundle好像是附加在intent中的,
: 我想做的是把前四頁使用者所選的資料傳至第五頁畫面顯示,但button是照頁數跑的,
: 新手學習中,已爬文,若有人問過會自刪,謝謝。
常用的存成cache 物件
希望下次登錄還可以看見資料
存成sharepreference、file、sqlite或者存在server端
首先建立一個class
public class UserData{
private String userName;
private String userId;
private int userAge;
//還有其他屬性 自己定義
public void setUserName(String name){
userName = name;
}
public String getUserName(){
return userName;
}
//其他的getter setter
}
宣告好類別以後 以sigleton pattern實做
這個模式的好處是只會new出一個物件
public class MyCacheDate{
public static MyCacheDate mMyCacheDate;
private ArrayList<UserData> mUserDataList;
public static MyCacheDate getInstance(){
if(mMyCacheDate == null){
mMyCacheDate = new MyCacheDate();
mMyCacheDate.init();
}
return mMyCacheDate;
}
private MyCacheDate(){}
private void init(){
mUserDataList = new ArrayList<UserData>();
}
public void addUserData(UserData data){
mUserDataList.add(data);
}
public UserData getUserDataByIndex(int index){
return UserData.get(index);
}
public ArrayList<UserData> getUserList(){
return mUserDataList;
}
//其他方法自己實做
}
那麼 就可以開始使用它惹
public class A extends Activity{
public void OnCreate(Bundle b){
//...
UserData data = new UserData();
data.setUserName("Brown");
data.setAge(11);
data.setId(0);
MyCacheDate.getInstance().addUserData(data);
}
}
每一個activity進行切換時 都可以取得那個物件來設定
最後到D的時候就可以取出這個物件
public class D extends Activity{
public void OnCreate(Bundle b){
//...
MyCacheData dataCache = MyCacheData.getInstance();
ArrayList<UserData> userDatas = dataCache.getUserDataList();
for(UserData u : userDatas){
String name = data.getUserName();
...
//這邊你也可以把所有資料存在SharedPreference DB 或File
//下次進入app仍然可以取得上次更新的資料
}
}
}
所有資料都可以即時取出 而不會因為你UI切換而改變
作者: givemepass (λ)   2014-10-04 15:08:00
我好像寫錯了 晚上再改
作者: JULONE780701 (亞)   2014-10-04 16:44:00
有錯嗎?我還認真一行一行看完欸= =
作者: pkmilk   2014-10-04 20:20:00

Links booklink

Contact Us: admin [ a t ] ucptt.com