閱讀110 返回首頁    go 阿裏雲 go 技術社區[雲棲]


兩個activity或者activity和fragment傳值

使用Fragment的時候可能需要在兩個Fragment之間進行參數的傳遞,開始想著可以使用SharedPreferences進行處理,想想這些簡單的參數沒有必要使用這麼麻煩的方式去實現,翻了一下Fragment的API,找到一個方法就能實現像Activity一樣便捷的實現參數傳遞 程序中的一段代碼

  1. ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(“”));  
  2.                 SearchProjectFragment sf = new SearchProjectFragment();  
  3.                 Bundle bundle = new Bundle();  
  4.                 bundle.putString("key", Projsid);  
  5.                 sf.setArguments(bundle);  
  6.                 ft.add(R.id.fragmentRoot, sf, SEARCHPROJECT);  
  7.                 ft.addToBackStack(SEARCHPROJECT);  
  8.                 ft.commit();  

   可以使用bundle進行參數傳遞,這樣在兩個Fragment跳轉的時候就可以帶上參數了,在另外一個Fragment獲取參數的方式隻需要一個語句String string = getArguments().getString("key");  key是自己定義的一個標識,參數的形式隻要bundle能傳遞都可以實現

     這個原理好像是和Activity是一樣的。我這裏傳遞的是一個關鍵字,從一個搜索Fragment頁麵跳轉到兩外一個結果查詢的Fragment頁麵,在跳轉的時候也可以加上一些動畫的跳轉效果

  1. 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

  上一篇:go EasyUI - DataGrid 去右邊空白滾動條列
  下一篇:go gnuradio中把file_sink的二進製文件轉換成文本文件