0

FragmentActivity에서 프래그먼트 A와 프래그먼트 B 각각에 두 개의 데이터 (이름과 주소)를 전달해야하는 서비스 호출을하고 있습니다.프래그먼트 작업에서 프래그먼트로 데이터를 전달하는 방법

여기 제가 시도한 코드입니다.

public interface PassDataToFragments { 
public void passDataToFragment(String someValue); 
    } 
class Fragment A extends Fragment implement PassDataToFragment{ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.trainers_certification, 
      container, false); 
return view; 
} 
@Override 
    public void passDataToFragment(String someValue) { 
    //Log.e("string",someValue); 

} 
} 
+0

ツ 그 피사체가 공식 기본 교육 페이지에 설명되어 도움이되기를 바랍니다 : HTTP

는 조각의 값을 가져옵니다 : //developer.android.com/training/basics/fragments/communicating.html 주어진 예제를 따라 해 보았습니까? – 2Dee

+0

@ Shadow :'interface'를 사용할 필요가 없습니다. 매개 변수화 된 클래스 생성자를 사용하여 Activity에서 Fragments로 데이터 전달하기 –

+1

'setArgument'가 더 좋은 옵션이 아니어야합니까? 덕분에 – Rohit5k2

답변

0

Activity의 메소드를 호출하여 간단하게 활동 데이터에 액세스 할 수 있습니다 조각에서 :

String name = ((C)getActivity()).getValue(); 
Toast.makeText(getActivity(), name, Toast.LENGTH_SHORT); 

C 클래스 :

public String getValue() 
{ 
    return trainerStrDescription; 
} 

가 여기

1

이 같은 활동에서 데이터를 전달합니다 내가 뭘하려

public class C extends FragmentActivity { 
// public PassDataToFragments fragmentCommunicator; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.detail_pager); 
    serviceCall(); 
} 

void serviceCall() { 
    JSONObject totalData = new JSONObject(result); 
    JSONObject jsonData = totalData.getJSONObject("result"); 
    trainerStrName = jsonData.getString("name"); 
    trainerStrAddress = jsonData.getString("address"); 
    // activityCommunicator.passDataToFragment(trainerStrName); i am 
    // null pointer exception 
    // pass name to fragment A and address to fragment B 
} 

@Override 
public SherlockFragment getItem(int arg0) { 
    switch (arg0) { 

    // Open Previous Projects 
    case 0: 
     FragmentA fragmentA = new FragmentA(); 
     return fragmentA; 

     // Open Certification 
    case 1: 
     FragmentB fragmentB = new FragmentB(); 
     return fragmentB; 

    } 
    return null; 
} 
} 

내가 인터페이스를 사용하지만, 내가 사용하는 방법을 알고 조각 B에 FragmentA 및 주소로 이름 값을하지 않는 것입니다

Bundle bundle = new Bundle(); 
bundle.putString("name", name); 
bundle.putString("address", address); 
FragmentA fragmentA = new FragmentA(); 
fragmentA.setArguments(bundle); 

및 조각 A의이

onCreateView 방법은 다음과 같이이를 검색 :

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment, container, false); 
    String name = getArguments().getString("name");  
    String address = getArguments().getString("address"); 
} 

편집

단편 벌써로드 된 경우 당신은 당신의 데이터를 얻을 것이다

PassDataToFragment fragA = (PassDataToFragment) getSupportFragmentManager().findFragmentById(R.id.container); // Change the id as per yours 
fragA.passDataToFragment(name, address); 

같은 데이터를 전송 (현재 구현을 사용하는) 이런 식으로 작업을 수행 할 수 있습니다 passDataToFragment() 조각 안에 A.

+0

. 내가 활동의 getItem 메서드 안에 번들을 전달해야합니까? – Shadow

+0

예, 조각을 생성하는 곳입니다. – Rohit5k2

+0

fragment.http : //paste.ofcode.org/jxHjMyxZFNPntBzcFLVXVF에서 비어 있습니다. – Shadow

관련 문제