1
안드로이드

에서 <의 NameValuePair> 한 조각에서 다른 ArrayList의를 보내는 방법, 여기에 내 코드 나는이 방법으로 데이터를 얻기 위해 노력하고 있어요내가 다른 하나 개의 조각에서의 NameValuePair의 ArrayList를 통과 할

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 (String)를 인수 (문자열)에 적용 할 수 없습니다. 추론 된 유형 NameValuePair는 한정된 매개 변수에 대한 유효한 대용 물이 아닙니다.

누구든지이 문제를 해결할 수 있습니까?

+0

모든 답변을

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

감사합니다. 그냥 문자열을 전달하는 것과 같은 일반적인 방법으로 모든 값을 전달하고 조각에서는 NameValuePair –

답변

1

여기에서 모든 대답을 읽은 후 마침내이 문제를 어떻게 해결했는지 알려드립니다. 즉, 사용하는 생성자의 SearchResult에서 다음

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()); 

, 내가 제안 조각에서의 NameValuePair 만들기 것

0

NameValuePairParcelable도 아니고 Serializable도 아니므로 Fragment을 통해 전체 개체를 전달할 수 없습니다. 당신이 할 수있는 일은 모든 단일 문자열을 묶음에 넣고 "수신기"에

+0

...을 사용하거나 HashMap (Serializable)을 사용하거나 ArrayList 키, ArrayList 값과 같은 키 배열 및 값 배열을 사용합니다 ... – Selvin

+0

번들이 HashMap에 매핑되기 때문에,이 경우에는'HashMap'을 사용할 때 장점이 없습니다. ArrayList에 관해서는 동일한 객체 @Selvin에 키와 값을 매핑하는 두 개의 ArrayList 대신에'Bean'을 사용하고 싶습니다. 아직도 제안/기여에 대한 감사드립니다. – Blackbelt

0

NameValuePair을 구현하지 않고 Parcelable 인터페이스를 구현하지 않는 것입니다. BasicValueName을 확장하고 Parcelable

다른 옵션은 Activity와 통신하여 데이터를 Activity로 유지하고 새 fragmen이로드 될 때 검색합니다.

-1

우선 조각은 절대로 서로 통신해서는 안됩니다. 대신 호스트를 호스팅하는 활동에 의해 구현되는 콜백 메소드를 통해 통신해야합니다. 다시 한 번 프래그먼트 인스턴스에서 setArguments(urlbundle);을 한 번 이상 호출 할 수 없습니다.

먼저 부모 작업이 구현해야하는 Fragment1에 대한 콜백 인터페이스를 만들어야합니다. ResultFragment와 같은 두 번째 문장은 ArrayList를 인수로 받아들이고 인터페이스에 표시하는 방법을 알아야합니다. 이 질문에 대한 대답을 보면 얼마나 쉽게 달성 할 수 있는지 알 수 있습니다. 당신의 조각은 두 개의 서로 다른 활동에로드 된 경우

Communication between Fragments

당신은 또한 다른 방법으로 Why direct communication between fragments is not recommended?

을 읽을 수 있습니다, 당신의 유일한 선택은 응용 프로그램 클래스를 확장하거나 저장할 수있는 싱글 톤 클래스를 사용할 수 있습니다 활동간에 공유하려는 ArrayList에 대한 정적 참조입니다.