2017-03-04 9 views
1

오류initLoader는 "this"를 세 번째 인수로 사용하지 않습니다.

initLoader (INT, android.os.Bundle, android.support.v4.app.LoaderManager.LoaderCallbacks) android.support.v4.app.LoaderManager '에서'아래 전체 오류 '가 될 수 없습니다 (INT, 널 (null), group15.cop4331project.MyReportsFragment) '에 적용이

나는 지원 라이브러리에 대한 답변을 모두 읽었습니다,하지만 그 아니다. 이 조각을 SQLite 데이터베이스의 목록으로 채우려고합니다. 왜 이것이 작동하지 않는지 알아 내고 싶습니다. 또한, 나는 OnCreateView와 OnActivityCreated를 올바르게 사용하고 있다고 생각하지만 확실하지 않습니다.

내 수입

import android.content.ContentUris; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ListView; 

내 코드

public class MyFragment extends Fragment implements LoaderManager.LoaderCallbacks <Cursor> { 

    //adapter for the ListView 
    MyCursorAdapter mCursorAdapter; 

    View rootView; 

    public MyReportsFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     rootView = inflater.inflate(R.layout.report_list, container, false); 

     return rootView; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     // Find the listview which will be populated with the data 
     ListView listView = (ListView) rootView.findViewById(R.id.list); 

     // Setup an Adapter to create a list item for each row of data in the Cursor. 
     mCursorAdapter = new ReportCursorAdapter(getActivity(), null); 
     listView.setAdapter(mCursorAdapter); 

     // Setup the item click listener 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Override 
      public void onItemClick(AdapterView < ?>adapterView, View view, int position, long id) { 
       Intent intent = new Intent(getActivity(), EditReportActivity.class); 

       Uri currentUri = ContentUris.withAppendedId(ReportEntry.CONTENT_URI, id); 

       // Set the URI on the data field of the intent 
       intent.setData(currentUri); 

       startActivity(intent); 
      } 
     }); 

     // Kick off the loader 
     getLoaderManager().initLoader(REPORT_LOADER, null, this); 
     //getActivity().getSupportLoaderManager().initLoader(REPORT_LOADER, null, this); 
    } 
} 

답변

0
그 부분은 확인하므로 initLoader이 onActivityCreated에서 호출해야

.

비슷한 문제가 발생했습니다. solo는 support v4 lib와 관련이 있습니다. import android.app.Fragment; 사용 : import android.support.v4.app.Fragment; 에이 import 문을 변경 import android.app.LoaderManager;

이이 모든 게시 할 수있는 경우, 게시 된 코드를 기반으로 (프로젝트의 아무 곳이나 지원 V4를 사용하지 않는 있는지 확인)

희망 도움이 될 수있는 imort 문이

+0

내가 그 사본 및 어떤 이유로 작동하지 않았다 (나는 다른 답변에서했다) 붙여 넣기 여러 import 문을 추측하지만이 트릭을 할 것 같다 . 고맙습니다. – bous006

+0

불행히도 지원 v4 라이브러리를 제거하면 탭간에 스 와이프를 구현할 수 없습니다. 나는 당신이 내가 쓸어 낼 수있는 방법과 내가 위에서 시도하고있는 것을 모두 할 수있는 방법을 알고 있다고 생각하지 않습니까? – bous006

+0

실제로 나는 그 문제가 너무, 당신이 fragmentPagerAdapter와 viewPager를 사용하는 경우 support.v13 라이브러리를 가져올 수 있습니다 : compile 'com.android.support:support-v13:25.1.1'귀하의 gradle 파일 . v13 지원 라이브러리에는 android.app.Fragments를 처리 할 수있는 FragmentPagerAdapter 클래스가 들어 있습니다. 행운 J – nir