android fragement之間互相傳遞參數,androidfragement

來源:互聯網
上載者:User

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傳遞的、這種方法應該更官方一點吧、不過在項目開發中、怎麼實現簡單就怎麼來、也沒太多關係

有任何疑問或要擷取更多代碼、可以在下面進行評論哈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.