アクティビティが表示されるデータをロードするために、initLoaderを作成するときにinitLoaderを呼び出すアクティビティがあります。通常、これは正常に動作します。私はすべてが起こる順序を見るために設定されたブレークポイントを持っています。最初にinitLoaderを呼び出し、次にOnCreateLoaderコールバックを取得し、次にOnLoadFinishedコールバックを取得します。時々、initLoaderを呼び出した後にonCreateLoaderコールバックを取得しないでください。
しかし、Androidの向きを変更しても、OnCreateLoaderコールバックやOnLoadFinishedコールバックが得られず、ページにデータが表示されないことに気付きました。私はまだinitLoaderコールでブレークポイントを取得しているので、それが起こっていることは分かっていますが、エラーは発生せず、なぜinitLoaderをコールした後にコールバックを取得できないのかの説明を見つけることができません。
興味深いことに、私が元の向きに戻った場合、私はコールバックを取得します。
ので、要約する:
を私はその後、風景
に変更私はonCreateLoaderとonLoadFinishedコールバックを取得
- 縦向きに活動を開始します
- は私が、私はinitLoader
- 呼び出す私はonCreateLoader取得し、同様にコールバック
をonLoadFinishedバック肖像
- に変更initLoader
- なしonCreateLoaderまたはonLoadFinishedコールバック
呼び出します私がランドスケープモードでアクティビティを開始すると、私はコールバックを取得します。その後、私がポートレートに切り替えると、私はしません。次に、私がランドスケープに戻ると、私はコールバックをもう一度取得します。
誰が何が起こっているか考えている人はいますか?
これはそのメンターが動作する方法です。既にデータをロードしているローダーでinitを呼び出すと、onLoadFinishedを介してそのデータが返されます。データをリロードするにはhttp://developer.android.com/reference/android/app/LoaderManager.html#restartLoader(int、android.os.Bundle、android.app.LoaderManager.LoaderCallbacks)をご覧ください。 –
Dori