使用fragment的時候可能需要在兩個fragment之間進行參數的傳遞,開始想着可以使用sharedpreferences進行處理,想想這些簡單的參數沒有必要使用這麼麻煩的方式去實作,翻了一下fragment的api,找到一個方法就能實作像activity一樣便捷的實作參數傳遞 程式中的一段代碼
ft.hide(getactivity().getsupportfragmentmanager().findfragmentbytag(“”));
searchprojectfragment sf = new searchprojectfragment();
bundle bundle = new bundle();
bundle.putstring("key", projsid);
sf.setarguments(bundle);
ft.add(r.id.fragmentroot, sf, searchproject);
ft.addtobackstack(searchproject);
ft.commit();
可以使用bundle進行參數傳遞,這樣在兩個fragment跳轉的時候就可以帶上參數了,在另外一個fragment擷取參數的方式隻需要一個語句string string = getarguments().getstring("key"); key是自己定義的一個辨別,參數的形式隻要bundle能傳遞都可以實作
這個原理好像是和activity是一樣的。我這裡傳遞的是一個關鍵字,從一個搜尋fragment頁面跳轉到兩外一個結果查詢的fragment頁面,在跳轉的時候也可以加上一些動畫的跳轉效果
ft.setcustomanimations(r.anim.slide_in_right, r.anim.slide_out_left, r.anim.slide_in_left, r.anim.slide_out_right);
下面是我在項目中例子,fragment通過itent将值傳遞到activty,然後通過下面的代碼
shipproductid=getintent().getstringextra("shipproductid");
shipcompanyfragment=new shipcompanyfragment();
bundle bundle=new bundle();
bundle.putstring("productid", shipproductid);
shipcompanyfragment.setarguments(bundle);
fragmenttransaction ft = getsupportfragmentmanager().begintransaction();
ft.add(r.id.ship_container, shipcompanyfragment);
ft.commit();
傳遞到fragment,
最後再fragment中
shipproductid=getarguments().getstring("productid");
即可得到