1

我想從一個片段傳遞到另一個的NameValuePair的ArrayList中,這裏是我的代碼如何發送的ArrayList <的NameValuePair>從一個片段到另一個機器人

param = new ArrayList<NameValuePair>(); 
    param.add(new BasicNameValuePair("member_id",mem_id)); 
    param.add(new BasicNameValuePair("country_id",countryid+"")); 
    Bundle urlbundle = new Bundle(); 

    urlbundle.putParcelableArrayList("params",(ArrayList<? extends Parcelable>) param);   
    result=new SearchResults(); 
    result.setArguments(urlbundle); 

我想用這種方式來獲取數據

Bundle urlbundle=this.getArguments(); 
    param=urlbundle.getParcelableArrayList("params"); 

但它給錯誤 約束不匹配:類型捆綁的一般方法getParcelableArrayList(字符串)不適用的參數(字符串)。推斷類型NameValuePair不是有界參數的有效替代

任何人都可以幫助我解決這個問題或如何正確執行此操作?

+0

我建議,在片段中創建的NameValuePair。只需以正常的方式傳遞所有值,就像傳遞字符串一樣,然後在Fragment中創建NameValuePair – 2014-09-29 09:14:04

回答

1

在閱讀完所有答案之後,最後我想分享我是如何解決這個問題的。 即使用構造

param = new ArrayList<NameValuePair>(); 
param.add(new BasicNameValuePair("member_id",mem_id)); 
param.add(new BasicNameValuePair("country_id",countryid+"")); 
result=new SearchResults(param); 
Util.replaceFragment(result, (NavDrawer) getActivity()); 
在SearchResult所

然後,

ArrayList<NameValuePair> param;  
public SearchResults(ArrayList<NameValuePair> list) { 
     this.param = list; 
    } 

感謝您的答案

0

NameValuePair既不是Parcelable也不是Serializable,所以你不能通過Fragment傳遞整個對象。你可以做的是把每一個單一的字符串捆綁在一起,並在「接收器」中構建ArrayList<NameValuePair>Fragment

+0

...或使用HashMap(Serializable)...或使用數組的鍵和值數組ArrayList keys,ArrayList values ... – Selvin 2014-09-29 09:15:09

+0

在這種情況下使用'HashMap'沒有任何優勢,因爲這個包被映射到一個HashMap上。關於ArrayList,我寧願使用'Bean',而不是兩個'ArrayList '來將鍵和值映射到同一個對象@Selvin。仍然感謝您的建議/貢獻 – Blackbelt 2014-09-29 09:18:47

0

NameValuePair不實現Parcelable接口。您應該擴展BasicValueName並執行Parcelable

其他選項與Activity進行通信並保存在Activity中,並在加載新的碎片時檢索它。

-1

首先,片段之間不應該交流。相反,他們應通過由託管它們的活動實施的回調方法進行通信。再一次,您不能在片段實例上多次調用setArguments(urlbundle);

因此,您應該首先爲父活動應實現的Fragment1創建一個回調接口。你的第二個分支,比如說ResultFragment,應該有一個接受ArrayList作爲參數的方法,並負責在界面上顯示它。 看看這個問題的接受答案,看看你能輕鬆實現它。

Communication between Fragments

您可能還需要閱讀Why direct communication between fragments is not recommended?

另外,如果您的片段在兩個不同的活動裝,你唯一的選擇可能是擴展應用類別或使用一個單獨的類,可容納一您想在活動之間共享的ArrayList的靜態引用。

相關問題