调用initLoader()后,Loader无法启动?

use*_*701 16 java android android-fragments android-activity android-loadermanager

我有一个片段,并且想要在单击按钮时启动加载器:

public class MyFragment extends Fragment {

    public void onActivityCreated() {
        super.onActivityCreated();

        Button btn = ...;
        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                getLoaderManager().initLoader(500, null, mMyCallback);
            }
        });
    }  

    private LoaderManager.LoaderCallbacks<String> mMyCallback = new  LoaderManager.LoaderCallbacks<String>() {

        @Override
        public Loader<String> onCreateLoader(int arg0, Bundle arg1) {
            Log.e(TAG, "LoaderCallback.onCreateLoader().");
            return new MyLoader(getActivity());
        }
    }
}

public class MyLoader extends AsyncTaskLoader<String> {
    public MyLoader(Context context) {
        super(context);
    }

    @Override
    public String loadInBackground() {
        Log.e(TAG, "Hi, running.");
        return "terrific.";
    }
}
Run Code Online (Sandbox Code Playgroud)

单击按钮后,我可以看到我的回调的onCreateLoader方法被调用,但创建的加载器实际上从未启动过.我们是否需要在加载器上调用forceLoad()来实际启动它?没有样本帖子这样做,

谢谢

Ale*_*ood 32

您需要在方法中的某个位置实现onStartLoading()和调用forceLoad().

有关更多信息,请参阅此文章:实施装载机(第3部分)


小智 6

在我的经验,从来没有工作,除非我用forceLoad().

您可能会发现上一个问题的答案很有用: Android Honeycomb中的加载器