2012-10-29 3 views

답변

17

이것은 실제로 Fragments의 공식 Android 문서에 포함되어 있습니다. 상위 액티비티의 컨텍스트 (예 : 토스트, 대화 상자)가 필요하면 getActivity()으로 전화하십시오. Fragment의 인터페이스에서 콜백 메소드를 호출해야하는 경우 onAttach(...)에서 인스턴스화 된 콜백 변수를 사용해야합니다. 당신이 조각에있는 경우

public static class FragmentA extends ListFragment { 
    ExampleFragmentCallbackInterface mListener; 
    ... 
    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     try { 
      mListener = (ExampleFragmentCallbackInterface) context; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface "); 
     } 
    } 
    ... 
} 

Source

+0

FragmentCallbackInterface를 사용하면이를 구현하는 것이 가장 좋습니다. –

+0

@James : getActivity()를 사용하는 것보다이 방법이 더 좋은 이유를 설명해 주시겠습니까? 경우에 따라 getActivity()가 null을 반환하고 앱이 다운됩니다. 위의 방법을 사용하면 앱이 다운되지 않을 수 있습니까? 감사. – Rajat

+1

getActivity()가 null을 반환하면 아직 연결되지 않았으므로'mListener'도 null입니다. 이 접근법은'getActivity()'를 사용하는 것보다 낫습니다. 왜냐하면 당신이 첨부 된 모든 액티비티가 프래그먼트의 컨텐트로 작업하는 데 필요한 인터페이스를 구현하기 때문입니다. –

8

getActivity()가 가장 좋습니다. 저장할 변수를 유지할 필요가 없습니다 (항상 앱주기!). 필요한 경우 메서드를 호출하고! :)

-2

, 당신은) (getActivity를 호출 할 수 있습니다; 또는 조각에 있다면 getApplicationContext(). getContext();를 호출 할 수도 있습니다. 대부분의 경우 getActivity()는 필요한 모든 작업을 수행합니다.

관련 문제