initLoader调用不会将“this”作为第三个参数。下面“在 'android.support.v4.app.LoaderManager

问题描述:

误差initLoader调用不会将“this”作为第三个参数。下面“在 'android.support.v4.app.LoaderManager

initLoader(INT,android.os.Bundle,android.support.v4.app.LoaderManager.LoaderCallbacks)全部错误' 不能是应用于'(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); 
    } 
} 

initLoader应onActivityCreated被称为所以这部分是确定的。

我遇到了一个类似的问题,solotion与支持v4 lib有关。更改此import语句: import android.support.v4.app.Fragment; 到: import android.app.Fragment; 及用途:import android.app.LoaderManager; (请确保您使用的不是支持V4项目中的任何地方)

这是基于你贴了,如果你能发布的所有代码可帮助

的希望imort声明这有助于

+0

我想,复制和粘贴几个import语句(这是我从其他的答案一样)因为某些原因没有工作,但这似乎这样的伎俩。非常感谢你。 – bous006

+0

因此,不幸的是,如果我删除了支持v4库,那么我无法在选项卡之间实施滑动。我不认为你知道我能做到的两种方法,一种是我可以在上面做什么? – bous006

+0

其实我也有这个问题:)如果你使用带有fragmentPagerAdapter的viewPager,你可以在你的gradle文件中使用:compile'c​​om.android.support:support-v13:25.1.1'导入support.v13库。 v13支持库包含一个可以处理android.app.Fragments的FragmentPagerAdapter类。祝你好运J – nir