2011-09-30 19 views
7

ドキュメントのいくつかによれば、アクティビティまたはフラグメントのいずれかでローダーを使用できますが、互換性パッケージは、FragmentActivityにのみgetLoaderManager()メソッドがあることを示しています。Fragmentsを使用してLoaderManagerを取得する必要がありますか?

古い管理対象カーソルは廃止されているため、カーソルローダーを使用する必要があります。だから、なぜこのデータ管理機能をUIウィジェットの選択肢に結び付けるべきですか?それは私には意味がありません。

おかげ P.

答えて

6

古い管理カーソルが、我々はカーソルローダーを使用する必要が廃止されましたので。

いいえ、管理カーソルは機能しません。通常、Androidで「非推奨」とは、「可能な限りこのメカニズムをサポートしますが、より良いオプションがあると考えています」という意味です。

このデータ管理機能は、なぜUIウィジェットの選択肢に縛られるべきですか?

そうではありません。 FragmentActivityから継承するフラグメントを使用する必要はありません。 LoaderManagerCapableActivityを作成して、関連するデータメンバーとメソッドをFragmentActivity(そのソースコードはハードドライブにあります)から複製することもできます。ただし、LoaderManagerは、管理対象カーソルと同様にアクティビティのライフ・サイクルに関連付けられているため、アクティビティに関連付けられることになります。たとえば、LoaderManagerインスタンスは、アクティビティ間でonRetainNonConfigurationInstance()を介して渡されます。

1

はい、loaderManagerを取得するには、アクティビティに関連付ける必要がありますが、loaderMangerを必要とせずにローダーを使用することは可能です。

1)AsynTaskLoaderを実装します。
2)クラスに実装したローダをインスタンス化します。
3)ロードが完了したらコールバックを取得できるように、ローダーのリスナーを登録します。
4)ローダーのstartLoadingメソッドを呼び出します。
5)ロードが完了したら、ロードされたデータを目的に応じて使用できるコールバックメソッドが呼び出されます。

関連する問題