1

조각 활동 내에서 setText 명령을 실행하여 상위 활동의 ​​textView 텍스트를 설정하려고했지만 작동하지 않습니다. 어떤 아이디어?set 내에서 단편

TextView text = (TextView) getView().findViewById(R.id.status); 
     text.setText("Text from a fragment"); 

이클립스에서 오류가 발생하지 않지만 런타임 중에 널 포인터 예외가 발생합니다. 물론 그것은 내가 setText에있는 라인에서 발생합니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

답변

2

예 조각보기에 R.id.status이 (가) 정의되지 않았기 때문에 NPE가있을 수 있습니다.

getView()은 조각의 onCreateView() 메서드에서 생성 된보기를 반환합니다.

(보조) FragmentActivity에서 활동의 TextView를 설정하거나 FragmentActivity의 TextView를 Fragment에서 설정하려고합니까?

첫 번째 옵션 인 경우 메시지 처리기를 사용하고 두 번째 활동에 메시지를 전달하는 등의 작업을 수행해야합니다. 나는 이것이 당신이 요구하고있는 것이라고 생각하지 않습니다.

Fragment에서 TextView를 설정하려면 일반적으로 FragmentActivity에서 인터페이스 (예 : updateText())를 정의하고 해당 메소드를 호출 할 조각을 가져 오는 것이 좋습니다. 그런 다음 Activity는 찾고있는 뷰를 반환하는 getView()을 호출 할 수 있으므로 TextView 업데이트를 처리합니다. 내 대답과 비슷합니다. here

+0

그래, 이것은 활동과 관련이 없어야하기 때문에 조각에 맞서지 만 내 곤경에서는 필요합니다. – EGHDK

5

getActivity()를 사용하십시오. findViewById() 메소드는 기본 액티비티에서 검색을 시작하고 "r.id.status"를 찾을 때까지 버블 업합니다.

TextView text = (TextView) getActivity().findViewById(R.id.status); 
text.setText("Text from a fragment");