數據傳遞:
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