2012-11-22 2 views
4

프래그먼트가 포함 된 프래그먼트 활동이 있고 프래그먼트가 일부 데이터를 다운로드하는 Asynctask를 시작하고 어댑터 및 목록 뷰의 일부 값을 업데이트하는 콜백 메소드를 내 프래그먼트에 구현했습니다. 내가 가진 문제는 다음과 같다 : 이것은 내 onCreateView 방법 (중요한 부분)입니다 :이전 프래그먼트를 참조하는 콜백 메소드

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    list=(PullToRefreshListView)v1.findViewById(R.id.listapull); 
    adapterList=new ListViewAdapter(secciones, mContext); 
} 

AsyncTask를이는 doInBackground을() 메소드는 다음 포스트에 트리거 실행, 실행 계속 실행되는 동안 장치를 회전 할 때 리스너를 만들고 콜백 메서드를 내 조각으로 시작하면이 메서드는 내 어댑터와 내 목록보기에 대한 이전 참조를 갖습니다. enter image description here

방향 변경이 발생했을 때 조각과 그 내용이 올바르지 만 다시 작성되지만 누구도 콜백 메소드가 어댑터에 대한 참조를 유지하는 이유와 오리엔테이션 변경 전에 만들어진 위치를 알 수 있습니까?

편집 :

asyncRefresh = new PullRefreshTask(taskContext, mContext, secciones); 
asyncRefresh.setUpdatePull2RefreshListener(this); 
asyncRefresh.execute(); 

사용자 프레스는 버튼을 AsyncTask를 청취자 오래된 조각을 설정 한 경우와 때 방향 변경을 :

나는이 같은 AsyncTask를을 실행하는 버튼이 있습니다 asynctask가 실행되는 동안 발생합니다. 활성화 된 콜백 메소드가 새로 생성 된 프래그먼트 메소드의 메소드라고 생각했지만 더 이상 확실하지 않습니다.

편집 2 : 내가 콜백 방법은 기존의 조각을 요구 받고 처음 편집에 말했듯이

나는 내 문제를 해결했다. 그래서 제가 한 일은 "정보"라는 이름의 또 다른 클래스의 변수에 내 AsyncTask를 저장하는 것이었다과에에 이런 짓을 내가보기를 만들 :

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     list=(PullToRefreshListView)v1.findViewById(R.id.listapull); 
     adapterList=new ListViewAdapter(secciones, mContext); 
     PullRefreshTasktask task = Info.getAsyncTask(); 
     asyncRefresh = task; 
     asyncRefresh.setUpdatePull2RefreshListener(this); 
    } 

내 조각의 새로운 기준을 설정이 방법

setUpdatePull2RefreshListener() 실행의 AsyncTask를

방법

+0

디버거 화면에서 볼 수 있듯이,'adapterList'는'Fragment' 내부 클래스의 인스턴스입니다. 문제가 될 수 있을까요? – ernazm

답변

1

... D 누구도 왜 콜백 메소드가 참조 번호 을 어댑터에 보관하고 목록 뷰를 작성하기 전에 방향이 으로 변경되었는지 알 수 있습니까?

(이 답변은 콜백 구현을 알고 사용하거나 사용하지 않고 오는 방법 AsyncTask 외모) 콜백 이전 조각에 대한 참조를 유지하지해야하는 이유 ? Button의 청취자에 현재Fragment 인스턴스를 설정 한 다음 작업이 실행되는 동안 장치 회전을 수행합니다. Fragment에는 코드가 없으므로 구성이 변경된 후에 다시 구성되므로 AsyncTask의 콜백 인스턴스가 새 조각을 가리 키도록 업데이트됩니다. 그 사용 방법에 따라 Fragment을 사용하면 Fragment이 파괴되지 않도록 Fragment.setRetainInstance() 메서드를 사용할 수 있으므로 회전 후에도 작업에 동일한 콜백 인스턴스가 적용됩니다.이 특정 문제와 관련된 Android 엔지니어의 an answer도 확인하십시오.

관련 문제