기본적으로 목록보기 인 조각이 있습니다. 부모 액티비티는 서비스에서 명단 항목 목록을 검색하는 메소드를 호출합니다. 데이터가 서비스에서 돌아 오면 나는 updateRosterItems를 호출하고 Roster 항목의 ArrayList를 통해 전달합니다. 문제는 그것이 처음에는 작동하지만 다른 탭을 선택한 다음 조각으로 탭으로 돌아 오면 getActivity()가 null을 반환하고 ArrayAdapter에 데이터를 연결할 수 없다는 것입니다.getActivity는 Fragment에 null을 반환합니다.
public void updateRosterList(ArrayList<RosterInfo> rosterItems)
{
if(_adapter == null)
{
_adapter = new RosterItemAdapter(getActivity(), R.layout.roster_listview_item, rosterItems);
}
Activity activity = getActivity();
if(activity != null)
{
ListView list = (ListView)activity.findViewById(R.id.lstRosterItems);
list.setAdapter(_adapter);
_adapter.notifyDataSetChanged();
}
}
나는 조각이 부착되기 전에 호출되는 코드에 의해 발생하는 유사한 문제에 대해 읽었습니다 :
이
은 updateRosterItems 기능에 대한 코드입니다. 내 질문에, onAttach 호출 될 때까지 updateRosterList에 대한 호출을 지연시킬 수있는 방법이 있습니까? 내가 감당할 수있는 해결책은 getActivity()가 null을 반환하고 프래그먼트의 private 변수에 데이터를 저장하고 onAttach 메소드가 varialbe에 데이터가 있는지 확인한 다음 어댑터에서 업데이트를 호출하는 것입니다. 이것은 조금 해키 것 같습니다. 어떤 아이디어?