2012-04-09 4 views
1

私は、さまざまなアクティビティ間のオブジェクトへの参照を保持する必要があります。 2つの言及は、アクティビティからアクティビティへの新しいオブジェクトを作成しているようだ。これは、親アクティビティーにフォーカスが移ると、「子」アクティビティー内のオブジェクトへの変更が持続しないため、問題です。これに対する私の解決策は、子アクティビティが呼び出して動作する親アクティビティーに静的ゲッターを作成することでした。これはこれについて間違った方法ですか?parcelable/serializeではなくstaticを使用しています - これは悪いですか?

答えて

2

アクティビティ間でオブジェクトの1つのインスタンスを共有する場合は、シングルトンクラスを作成できます。シングルトンを実装するために親クラスのアクティビティクラスを使用することで間違っているのは、single responsibility principleに違反する可能性があることだけです。

0

Application由来のクラスのフィールドにすることで、アプリケーションのライフサイクル全体にわたってオブジェクトを永続化することができます。その後

public class MyAppication extends Application { 

private Object mMyData; 

public setData(Object data) { 
    mMyData = data; 
} 

public Object getData() { 
     return mMyData; 
} 

}

((MyApplication)getAppllication()).setDataまたはgetData()

MyApplicationが常に存在しますので、あなたがアプリケーション内でデータを交換することができますこの方法。

また

0

あなたはシングルトンを作成する必要がありますが、これはあなたがそれに話をするたびに単一のインスタンスを持つマニフェストにMyApplcationを追加する必要があります。 (ちょうどあなたの記述のように)。

ここで私が以前に作られたものです:あなたはコンテキストに静的な参照を持っていないのはなぜhttps://stackoverflow.com/a/6539080/413127

+1

が。あなたのシングルトンにアクティビティを渡し、オリエンテーションを変更すると、アクティビティは破壊されますが、あなたのコンテキストフィールドはそれを保持します。さらに、もはや有効ではない文脈を使うことができるかもしれません。 –

+0

それは個人的な参照です。クラスは1つのグローバルコンテキストを持つシングルトンです。これが問題になる場合は、クラス内でのコンテキストの使用に依存します。 – Blundell

+0

シングルトンへの参照は、アクティビティとともに破棄されます。次にシングルトンを尋ねるときは、コンテキストを更新する必要があります。ああ、それは100%シングルトンではありません。私はあなたの言うことを見ています。 – Blundell

関連する問題