數據傳遞: 1.通過資料庫進行數據的傳遞 如在fragment中將數據保存在資料庫中,之後其他的fragment或者activity直接讀取資料庫中的數據,資料庫使用還算簡單,這裡就不多說,建議使用litepal,簡單的不要不要的 2.通過Bundle實現兩個fragment的數據傳遞 想必大家看到 ...
數據傳遞:
1.通過資料庫進行數據的傳遞
如在fragment中將數據保存在資料庫中,之後其他的fragment或者activity直接讀取資料庫中的數據,資料庫使用還算簡單,這裡就不多說,建議使用litepal,簡單的不要不要的
2.通過Bundle實現兩個fragment的數據傳遞
想必大家看到這裡,想到的就是使用帶參數的構造函數來實現數據的傳遞吧,我剛開始也是如此,但是,寫上代碼之後,發現有一個提示,就是建議不要使用此方法來實現數據傳遞
那我們怎麼辦呢?我們可以使用Bundle來實現
我們在fragment裡面新建一個靜態方法,其返回值為一個fragment類,其的參數就是代表的需要傳遞的數據
通過bundle的put將數據存放在bundle中,之後調用fragment的setArguments是fragment攜帶上Bundle
一個fragment最先開始就是會執行onCreate方法,所以我們在這方法來接收我們傳遞的數據
先是通過getArguments來獲得fragment攜帶的Bundle,之後調用Bundle的get方法來獲得數據,賦值給成員變數,圖中isExist和personProperty均是私有全局成員變數
之後使用就是這樣使用
PropertyFragment fragment = PropertyFragment.newInstance(personProperty,true);
刷新UI:
1.在fragment內部進行更改控制項
在activity中,要想刷新UI,需要找到控制項的實例,之後調用相關的方法更新UI
同樣的,在fragment之後也是如此,不過有所不同的是, fragment只能在在onViewCreated方法中才能調用findviewbyid找到控制項的實例
2.在activity中更改控制項,需要找到fragment的實例,並且在fragment裡面公開一個更改控制項的方法
如果是使用靜態方法(在xml使用name屬性使用fragment),可以通過fragmentManger的findfragmentById或者是findfragmentByTag方法找到fragment的實例
如果是使用的動態方法(用java代碼new一個fragment),那麼就不用那麼麻煩,可以直接調用fragment裡面定義的那個公開的更改控制項的方法
3.通過Activity作為中轉,在另外一個fragment更改另外一個fragment的UI