在Android文檔裝載機發現在http://developer.android.com/guide/components/loaders.html重新啓動它說裝載機的特性之一是:裝載機的方向變化
配置更改後正在重建時,它們會自動重新連接到最後加載器的光標。因此,他們不需要重新查詢他們的數據。
下面的代碼似乎並沒有反映這種行爲,一個新的Loader創建一個完成查詢ContentResolver的,那麼我旋轉屏幕,並重新創建的裝載機!
public class ReportFragment extends Fragment implements LoaderCallbacks<Cursor> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(1, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container, false);
return v;
}
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("TEST", "Creating loader");
return new CursorLoader(getActivity(), ResourcesContract.Reports.CONTENT_URI, null, null, null, null);
}
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
Log.d("TEST", "Load finished");
}
public void onLoaderReset(Loader<Cursor> arg0) {
}
}
這裏是我的logcat輸出:
08-17 16:49:54.474: D/TEST(1833): Creating loader
08-17 16:49:55.074: D/TEST(1833): Load finished
*Here I rotate the screen*
08-17 16:50:38.115: D/TEST(1833): Creating loader
08-17 16:50:38.353: D/TEST(1833): Load finished
任何想法,我做錯了什麼?
編輯:
我要指出,我建設,以谷歌Android API的8版本,並使用V4支持庫。
2日編輯:
這很可能是由於在支持庫中的錯誤,如果你想了解更多信息,看看這個bug提交:
看到這篇文章的更多信息:http://www.androiddesignpatterns.com/2012/08/implementing-loaders.html – 2012-08-23 16:30:55
此外,你應該調用'getLoaderManager()'onActivityCreated' ...你當前的代碼如果在第一次創建'Fragment'時'Activity'仍然是'null',將拋出'IllegalStateException'。 – 2012-08-23 16:37:52
@AlexLockwood,在您使用support-v4:18.0.0的例子中(做得好!)。當前版本是23.0.1,它包含這個錯誤。我測試的最新工作版本是22.0.0。 – 2015-09-24 08:58:54