Same On Wednesday, June 27, 2012 4:53:47 PM UTC+3, szakalinhoPL wrote: > > Hello, > I noticed a strange situation when using Loader in Fragment (in Activity > works well). I init Loader in onActivityCreated() as suggested in > documentation (http://developer.android.com/guide/components/loaders.html) > and after orientation change framework calls twice > method LoaderCallbacks.OnLoadFinished but not in initLoader (probably > beacause Fragment is not in started state, but in docs there is information > that I should be prepared for this > (http://developer.android.com/reference/android/app/LoaderManager.html#initLoader(int, > > android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>) but it > never happens) . However if I call iniLoader in Fragment.onResume() > everything works as expected. The same issue is described here > https://groups.google.com/forum/?fromgroups#!topic/android-developers/aA2vHYxSskU. > > It happens using support library as well. Anyone noticed this situation? I > wrote very simple application to test this issue, here is sample code: > > > //Activity class > > package com.example; > > import android.app.Activity; > import android.app.LoaderManager; > import android.os.Bundle; > > public class MyActivity extends Activity > { > /** > * Called when the activity is first created. > */ > @Override > public void onCreate(Bundle savedInstanceState) > { > super.onCreate(savedInstanceState); > setContentView(R.layout.main); > > LoaderManager.enableDebugLogging(true); > if (savedInstanceState == null) > { > getFragmentManager().beginTransaction().add(R.id.container, > new TestFrag(), "asdf").commit(); > } > } > } > //Fragment class > > package com.example; > > import android.app.Fragment; > import android.app.LoaderManager; > import android.content.Loader; > import android.os.Bundle; > import android.util.Log; > > public class TestFrag extends Fragment > { > @Override > public void onActivityCreated(Bundle savedInstanceState) > { > super.onActivityCreated(savedInstanceState); > LoaderManager.LoaderCallbacks c = new > LoaderManager.LoaderCallbacks() > { > @Override > public Loader onCreateLoader(int id, Bundle args) > { > return new Loader<Object>(getActivity()) > { > @Override > protected void onStartLoading() > { > Log.d("TAG", "onStartLoading " + this); > deliverResult(new Object()); > } > }; > } > > @Override > public void onLoadFinished(Loader loader, Object data) > { > //THIS IS CALLED TWICE > Log.d("TAG", "onLoadFinished " + data); > } > > @Override > public void onLoaderReset(Loader loader) > { > } > }; > getLoaderManager().initLoader(100, null, c); > > } > > } > >
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en