2015-02-05 2 views
0

파편을 담을 수있는 컨테이너가 하나 있습니다. 단편 1은 예를 들어 제품 목록입니다. 검색 작업에서 컨테이너를 Fragment2 (검색 - 필터 패널)으로 바꿉니다. 뒤로 버튼을 사용하면 백 스택에서 팝업되도록 조각 1을 보내야합니다. 그렇게하는 방법 ? 나는 모든 조각에 (setArguments 사용) 정적 create 메서드를 가지고 있지만 새 인스턴스를 만들고 싶지 않습니다. 어쩌면 조각을 사용하지 못했지만, setArguments 메서드에 대해서만 알지만이 메서드는 조각의 새 인스턴스를 만드는 데만 사용할 수 있습니다.일부 데이터가 백 스택에서 팝되었을 때 조각으로 보내는 방법은 무엇입니까?

답변

1

당신은 MainActivity에 데이터를 저장하고 같은 어떤 조각에서 그것을 읽을 수 있습니다 : 그들은 서로 완전히 독립적이어야한다로 항상 활동을 통해 수행해야 조각 사이

//MainActivity 
private String mSearchItem; 

public void getSearchItem(){ 
    return this.mSearchItem; 
} 

public void setSearchItem(String searchItem){ 
    this.mSearchItem = searchItem; 
} 


//FRAGMENT 1 
public void onResume(){ 
    super.onResume(); 

    String item = ((MainActivity)getActivity()).getSearchItem(); 
    //if item != null do some crazy shizzle 
    //set MainActivity searchitem to null to avoid reloading it 
} 



//FRAGMENT 2 
private void setData(String searchItem){ 
    ((MainActivity)getActivity()).setSearchItem(searchItem); 
} 
0

통신.

+0

나는 어떤 종류의 행동 (REST 서비스 접근)을 위해'Otto' (이벤트 버스)를 사용하고 있습니다. 그 상황에서 사용할 수 있습니까? – marioosh

0

같은 활동의 두 조각 사이의 모든 통신은, getActivity() 메소드를 사용합니다 인터페이스를 작성하고 당신은 당신의 활동에 변수 데이터를 저장할 수 있습니다

0

활동 안에 그것을 구현 활동을 통해 수행해야 당신의 프래그먼트가 첨부되고 이전 프래그먼트의 onResume()에서 그것을 당신의 액티비티에서 복원하여 사용할 수 있습니다.

관련 문제