2016-03-23 6 views
1

私のアプリでは、6個のフラグメントを管理するためにタブを使用したアクティビティがあります。私はWebサービスからダウンロードしたいくつかのデータに基づいてプログラムでいくつかのビューを作成しなければならない断片があります。私はプログラムで作成したビューを保存し、毎回それらを再作成する必要がなくてもフラグメントの再開時に復元することはできますか?ビューを保存してフラグメントをプログラムで作成し、onresumeでリストアする

答えて

0

あなたはあなたの破片のためのシングルトンパターンを使用する必要があります。

シングルトンは、Javaでは、唯一のインスタンスがアクセスのグローバルポイントこのインスタンスを提供して作成することができるためのクラスです。シングルトンパターンは、これをどのようにアーカイブできるかを記述します。例えば

:あなたのフラグメントにアクセスしたい場合は

public class YourFragment extends Fragment { 
     private static YourFragment uniqInstance; 

     private YourFragment() { 
     } 

     public static YourFragment getInstance() { 
     if (uniqInstance == null) { 
      uniqInstance = new YourFragment(); 
     } 
     return uniqInstance; 
     } 
     ......... 
} 

呼び出す必要があります:あなたはあなたのフラグメントでメソッドにアクセスする場合

YourFragment.getInstance(); 

を呼び出す必要があります:

YourFragment.getInstance().yourMethod(); 

もちろん、あなたがアクセスする方法は公開する必要があります。

希望すると助かります!

+1

あなたの答えをありがとう、それはいくつかのケースでは便利ですが、私の場合は最適な解決策ではありません。私は既に断片の創造をただ一回呼びとっていました。私が答えを待っている間、私は自分自身で何らかの解決策を見つけました。私はフラグメントのルートビューをフラグメント自体の変数にしていました。そして、OnCreateViewが呼び出されるたびに、ビューがnullの場合のみビューを膨張させ、そうでなければ前に作成したものと同じビューを返します。今問題は、私がWebサービスからのデータ更新を検出したときにビューを更新することです – Marcel