兩個activity或者activity和fragment傳值
使用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");
即可得到
最後更新:2017-04-03 05:40:12