2016-10-08 6 views
0

私はFacebookのようなアプリケーションのプロジェクトにおり、私はFirebaseデータベースを使用しています。ユーザー(ログインしたユーザー)のオブジェクトがあり、そのオブジェクトに属性(プロフィールメッセージのタイムラインのような)さまざまなアクティビティをユーザがナビゲートしたときに、いつでもデータをロードすることができます。MainActivityuser.setProfileのような)1つのオブジェクトにデータを入れ、そのオブジェクトにすべてActivityからアクセスさせたいですか?それは可能ですか?(簡単な例は非常に高く評価されます)他のアクティビティで同じオブジェクトにアクセスする方法

答えて

0

解決策の1つは、アプリケーションクラスを使用することです。

class FbprojectApplication extends Application{ 
    static UserObject user; 

    public static void setUserObject(UserObject user){ 
     this.user=user; 
    } 

    public static UserObject getUserObject(){ 
     return user; 
    } 

} 

アンドロイドアプリケーションクラスでは、アプリケーション全体でライフサイクルがあるため、必要に応じてアクティビティを使用して呼び出すことができます。あなたの活動から今

public class MainActivity extends Activity{ 

//initialize userobject whenever you need to. 
    void initializeUser(UserObject user){ 
    FbprojectApplication.setUserObject(user); 
} 
} 

は、同様に、この変数は、任意のクラスから利用できるようになります。

public class OtherActivity extends Activity{ 

//get userobject whenever you need to. 
    FbprojectApplication.getUserObject(); 
} 

ユーザオブジェクトは、アプリケーションクラスの静的であるとして、あなたは様々なアクティビティ間で矛盾を気にせずにそれを再初期化することができます。

+0

明確な答えをありがとう – user6798995

+0

マニフェストファイルにアプリケーションクラスを追加することを忘れないでください。 –

+0

私は感謝しません! – user6798995

1

シングルトンデザインパターンを試してみてください。スレッドセーフな問題を忘れないでください。

参考:Singleton pattern

+0

私はシングルトンパターンがJavaで動作することを知っていますが、コンストラクタを作成する必要がありますが、アクティビティはどういうものですか?どのようにそれをそこで働かせることができますか? – user6798995

+0

シングルトンクラスを作成し、そのインスタンスをActivityクラスで使用します。必要なインターフェースを提供するだけです。たとえば、 'private T userProfile'、' public T getUserProfile() '、' public void setUserProfile(T) 'などです。 – jules3c

0

のアプリを通じて依存関係のこの種を処理するための良い方法は、あなたがオブジェクトを保持することができます怠惰になりたい場合は、このような短剣http://square.github.io/dagger/

として、依存性注入フレームワークを使用することですアプリケーションクラスでは、これはどのアクティビティでも利用可能になります。

0

staticオブジェクトを起動時に宣言することをお勧めします。Activityその後、Firebaseから値を取り込んだ他のすべてのActivityの値を取得できます。

関連する問題