2014-12-10 4 views
0

조각에서 AsyncTaskLoader를 실행하려고하고 있는데 왜 onLoadFinished가 호출되지 않았는지 정확히 알지 못합니다. 내가 전달하는 컨텍스트가 적절한 것인지 확실하지 않습니다.AsyncTaskLoader가 단편에서 제대로 작동하지 않습니다.

이 기본 및 사용자 정의 AsyncTaskLoader입니다 :

나는 3 가지 방법이 overwritted을 보여줍니다 여기에
public static class CustomAsyncLoader extends AsyncTaskLoader<String> 
{ 
     public CustomAsyncLoader(Context context) { 
      super(context); 
      // do some initializations here 
     } 

     @Override 
     protected void onForceLoad() { 
      // TODO Auto-generated method stub 
      super.onForceLoad(); 
     } 

     @Override 
     public void deliverResult(String apps) { 

     } 

     @Override 
     protected void onStopLoading() { 
      // Attempts to cancel the current load task if possible 
      cancelLoad(); 
     } 

     @Override 
     public void onCanceled(String apps) { 
      super.onCanceled(apps); 
     } 

     @Override 
     public String loadInBackground() { 
      String result = ""; 
       // ... 
       // do long running tasks here 
       // ... 
       return result;    
     } 
} 

: onResume 내 조각의 내가 로더를 초기화하기 위해서 호출하고있는 방법에

@Override 
public Loader<String> onCreateLoader(int arg0, Bundle arg1) { 
    // TODO Auto-generated method stub 
    return new CustomAsyncLoader(root.getContext()); 
} 

@Override 
public void onLoadFinished(Loader<String> arg0, String arg1) { 
    // TODO Auto-generated method stub 
    Toast.makeText(mContext, "onLoadFinish", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onLoaderReset(Loader<String> arg0) { 
    // TODO Auto-generated method stub 

} 

:

getLoaderManager().initLoader(0, null, this).forceLoad(); 

마지막으로 자세히 설명하는 부분은 그는 로더 콜백 :

public class FragmentName extends CustomFragment implements LoaderManager.LoaderCallbacks<String> 

구현 방법에 대해 도움을 줄 수 있는지 알아 보겠습니다. 미리 감사드립니다.

답변

1

deliverResult 방법에서 super.deliverResult(apps)으로 전화해야합니다. 그렇지 않으면 수퍼 클래스의 CustomAsyncLoader가 등록 된 리스너에게 결과를 전달하지 않습니다.

+0

감사합니다. 이렇게하면 문제가 해결됩니다. –

관련 문제