2

アクティビティ間でオブジェクトを渡す簡単なメカニズムがあることは知っています。私は通常BundleandputParcelable()または putSerializable()を使用しますが、参照を保持せずにオブジェクトをパックおよびアンパックすることで、実際には生データを渡していることを知っています。

しかし今、私の問題は異なります。いくつかのサービスやその他のアクティビティへの参照を渡す必要があります。それを行う方法はありますか?


多分私は実際の問題で私の問題を説明します:

  1. Cityとりわけ気象データを格納する単純なクラスがあります。
  2. 中に入れて飾ってListFragmentいます。
  3. のフラグメントもありますGoogleMap。これは、都市を天気とともにリストに表示します。

cities: List<City>アプリケーションにどのように保存すればよいですか?

4

3 に答える 3

13

一部のサービスやその他のアクティビティへの参照を渡す必要があります

いいえ、ありません。「一部のサービスとその他のアクティビティ」が同じデータにアクセスできるようにする必要があります。参照渡しは、この目的を達成するための 1 つの方法ですが、Web アプリで一般的に使用されないのと同様に、Android でも一般的に使用されないアプローチです (たとえば、ページは JavaScript オブジェクトを他のページに渡しません)。

典型的なアプローチは、多数の POJO を管理するシングルトンなど、データベースに支えられた中央データ モデルを用意することです。次に、Android で識別子を渡します。これらの識別子は通常、単純な値 (int、文字列など) です。

于 2013-02-19T21:16:17.653 に答える
4

問題のオブジェクトは単純なリストであるため、Application を拡張してリストを格納できます。

public class MyApp extends Application {

    List<City> cityList.....

    //onCreate()

    public List<City> getList() {}

    public List<City> setList()
}

次に、次のように呼び出します。

MyApp app = getApplication(); //getActivity().getApplication() in the Fragment
List<City> mylist = app.getList();
于 2013-02-19T21:15:13.507 に答える
0

参照してください:

Serializable または Parcelable を実装せずに Intent 内でオブジェクト参照を渡す

プロセス間でオブジェクトへの参照を渡すことはできません。Mark が指摘しているように、機能的に類似した多くのことを行うことができます。ただし、あなたの質問に対する答えは「いいえ」です

于 2013-02-19T22:08:28.210 に答える