2016-10-05 3 views
-1

私は5つのフラグメントを持っています。これらのフラグメントの1つは、サーバーからユーザーのリストをロードして、そのフラグメント上のUIリストを取り込みます。ユーザーが別の断片にスワイプして元に戻すと、リスト情報が保持される必要があります。私は、ユーザーがフラグメントを離れて戻ってくるたびに、フラグメントをユーザーにリロードさせたくありません。フラグメント間の情報を保持するAndroid

私はsetRetainInsance(true)を見ていますが、これが解決策であるかどうか疑問に思っていましたか?フラグメントが毎回ゼロから作成されることなく情報を保持する最良の方法は何でしょうか。

私はこれを使用して、フラッグを切り替えることができます。-getSupportFragmentManager()。beginTransaction()。replace(R.id.searchLayout、ratingFragment).commit();

答えて

0

フラグメントは他のオブジェクトとまったく同じです。 断片トランザクションに、フラグメントはOnCreate関数()メソッドを呼び出していない代わりに、それはそれゆえ、ユーザーをロードし、インスタンス変数を保存し、onCreateViewから始まり、のonCreate(でそれを割り当てる)

class MyFragment extends Fragment{ 


List<users> userList; 

void onCreate(){ 
    userList = getUserList();} 
//the list is loaded during Oncreate(); 

今あなたが)今Andoridフレームワーク、のonCreate(によるフラグメント

を交換した想像は(onCreateView代わり 再び呼び出されることはありません)

void onCreateView(){ 
//you can check whether instance Variable is initialised or not 
if(userList != null) { 


listview.setAdapter(new Myadapter(this,userList); 
と呼ばれています
+0

これは非常に良い解決策のようであり、これまで見たことの中で最も単純なものです。ありがとう、私はこれを試し、それが動作するかどうかをお知らせします! –

0

フラグメントをバックスタックに追加して置き換えます。

また、Viewのオブジェクトを作成し、nullでない場合はそれを返します。

private void View view ; 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      if (view != null) 
       return view; 
      view = inflater.inflate(R.layout.fragment_browse_recipe, container, false); 
    //initialize layout views 
    return view; 
    } 
関連する問題