【发布时间】:2015-04-02 12:35:12
【问题描述】:
我在ViewPager 中有一个名为AllSongsFragment 的片段。父 Activity 扩展 android.support.v4.app.FragmentActivity。
我正在尝试实现LoaderManager 和CursorLoader 以异步获取游标。下面是AllSongsFragment:
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.content.CursorLoader;
public class AllSongsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
public void onActivityCreated(Bundle savedInstanceState) {
.
.
getLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Toast.makeText(getActivity(), "YAYYYY", Toast.LENGTH_SHORT);
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = new String[] {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST};
CursorLoader cursorLoader = new CursorLoader(getActivity(), uri, projection, null, null, null);
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
Toast.makeText(getActivity(), "finished", Toast.LENGTH_SHORT);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// TODO
}
}
我的问题是 onCreateLoader() 或任何 LoaderManager 回调方法都没有被调用。该应用程序也不会崩溃,也没有例外。我做错了什么?
【问题讨论】:
-
我的原始代码实际上正在运行。经验教训:永远不要使用 Toast 来确认方法调用。而是使用 android.util.Log
-
我现在意识到我没有在 Toast 上调用 show()。我多么愚蠢。
标签: android android-support-library android-cursorloader android-loadermanager android-loader