2017-11-13 1 views
0

부모 액티비티와 프래그먼트간에 통신 할 수있는 인터페이스 생성에 대한 공식 Android 설명서를 읽었습니다. 그래서 한 가지 방법을 호출하여 부모 액티비티에서 값을 가져올 때 내 앱이 다운됩니다. 내 단편이 같은 인터페이스가 있다면안드로이드 - 프래그먼트에서 부모 액티비티의 변수를 올바르게 얻는 방법

내 호출 활동에서 public interface InteractWithFragmentA { String getStringText(); }

나는 더미 텍스트

@Override 
public String getStringText(){ return "Some dummy text";} 

내가의 FragmentA.java에 변수가 그것을 밖으로 테스트 호스트 액티비티에 대한 참조이며 InteractWithFragmentA에 캐스팅되었습니다. 그러나이 메서드를 호출 할 때

_hostActivity.getStringText()

앱이 다운됩니다. 내가 누락 된 것이 있습니까? 호스트 활동의 변수를 공개 및 정적 또는 다른 방법으로 변경하여 제안한 몇 가지 방법을 살펴 보았지만 그 활동에 단편을 연결하지 않으려 고합니다. 미리 감사드립니다.

+0

당신이 당신의 로그 캣을 게시 할 수있는 조각에서 이것을 시도? – riadrifai

답변

1
요이해야

:

활동

public class YourActivity implements YourActivityInterface{ 
    @Override public String getStringText(){ return "Some dummy text";} 
} 

인터페이스를

public interface YourActivityInterface { 
    String getStringText(); 
} 

조각

public class YourFragment extends Fragment { 

    YourActivityInterface mListener; 

    //your method... 
    mListener.getStringText() 


@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof YourActivityInterface) { 
      mListener = (YourActivityInterface) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement YourActivityInterface"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 
    } 
+0

문제를 파악했습니다. 내 액티비티의 getSomething 메서드가 null 값을 반환했습니다. 모의 데이터로 테스트 해본 결과 문제가 무엇인지 알아 냈습니다. – daniekpo

+0

도움을 주셔서 감사합니다. – daniekpo

0

((YourActivity) getActivity()).getStringText(); 
+0

저는 실제로 그런 조각에 조각을 연결하는 것을 피하려고했습니다. 나는 그 문제가 무엇인지 알아 냈다. null 값을 반환했습니다. 그래도 도움을 주셔서 감사합니다. – daniekpo

관련 문제