android fragement之間互相傳遞參數,androidfragement
在Activity中載入Fragment的時候、有時候要使用多個Fragment切換、並傳值到另外一個Fragment、也就是說兩個Fragment之間進行參數的傳遞、查了很多資料、找到兩種方法、一種是通過共同的Activity傳遞、這種方法是在Activity裡面添加一個欄位、來臨時儲存要一些值。
其實我開始想的是用SharedPreferences,不過想想太麻煩!
然後翻了一下Fragment的API、找到了另外一個方法來傳遞、就像Activity一樣便捷的實現參數傳遞程式中的一段代碼、是通過Bundle來傳遞的、相比之下第一種方法要簡單一點
FRAGMENT參數傳遞方法一
在Activity中定義一個欄位、然後添加set和get方法、代碼如下、mTitle就是要傳遞的參數、如果是傳遞對象、可以把mTitle換成一個對象即可
public class DemoActivity {private String mTitle;public String getmTitle() {return mTitle;}public void setmTitle(String title) {this.mTitle = title;}}
Fragment調用方法、需要注意的是在設值的時候要進行強轉一下
((DemoActivity)getActivity()).getmTitle();
FRAGMENT參數傳遞方法二
可以使用bundle進行參數傳遞、這樣在兩個Fragment跳轉的時候就可以帶上參數了、同樣也可以傳遞一個複雜的對象
ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(""));DemoFragment demoFragment = new DemoFragment(); Bundle bundle = new Bundle(); bundle.putString("key", "這是方法二"); demoFragment.setArguments(bundle); ft.add(R.id.fragmentRoot, demoFragment, SEARCHPROJECT); ft.commit();
在另外一個Fragment擷取參數的方式只需要一個語句、key是自己定義的一個標識、參數的形式只要bundle能傳遞都可以實現
String string = getArguments().getString("key");
總結
從上面兩種方法看來、方法一要簡單一些、但個人覺得有點投機取巧、不過也很合Java的開發規範、如果是同一個Activity中要載入很多Fragment的話、這種方法無疑要簡單很多
而方法二是使用了Android的Bundle傳遞的、這種方法應該更官方一點吧、不過在項目開發中、怎麼實現簡單就怎麼來、也沒太多關係
有任何疑問或要擷取更多代碼、可以在下面進行評論哈