【问题标题】:I'm working with ListFragment but I'm having some problems with LoaderManager我正在使用 ListFragment,但在使用 LoaderManager 时遇到了一些问题
【发布时间】:2013-07-15 08:45:33
【问题描述】:

我正在制作一个音乐播放器,我只是想使用 ListFragment 显示艺术家姓名。代码如下:

import android.app.ListFragment;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AlbumsFragment extends ListFragment implements
LoaderManager.LoaderCallbacks < Cursor > {

    AlbumsAdapter mAdapter;

    @
    Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View myFragmentView = inflater.inflate(R.layout.tabs_list, container, false);
        return myFragmentView;
    }


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

        mAdapter = new AlbumsAdapter(getActivity(), null);
        setListAdapter(mAdapter);

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


    static final String[] ALBUM_SUMMARY_PROJECTION = {
        MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM
    };



    public Loader < Cursor > onCreateLoader(int id, Bundle args) {
        String select = null;
        return new CursorLoader(getActivity(), MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, ALBUM_SUMMARY_PROJECTION, select, null, null);
    }



    public void onLoadFinished(Loader < Cursor > loader, Cursor data) {
        mAdapter.swapCursor(data);
    }



    public void onLoaderReset(Loader < Cursor > loader) {
        mAdapter.swapCursor(null);
    }
}  

我收到一条错误消息: LoaderManager 类型中的方法 initLoader(int, Bundle, LoaderManager.LoaderCallbacks) 不适用于参数(int, null, AlbumsFragment)

【问题讨论】:

    标签: android android-listfragment android-loadermanager


    【解决方案1】:

    你在你的导入中看到了吗?

    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.LoaderManager;
    import android.support.v4.content.CursorLoader;
    import android.support.v4.content.Loader;
    import android.support.v4.widget.CursorAdapter;
    

    表示您使用的是支持版本的 LoaderManager。

    所以你应该替换

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

     getSupportLoadManager().initLoader(0, null, this);
    

    【讨论】:

    • 我试过了,但它显示一个错误,说“方法 getSupportLoaderManager() 未定义为 AlbumsFragment 类型”
    【解决方案2】:

    你也应该使用

    import android.support.v4.app.ListFragment;
    

    目前您使用的是标准的 ListFragment 而不是支持的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2012-05-13
      • 1970-01-01
      • 2020-03-13
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多