2016-09-02 20 views
1

私はアプリケーションで作業しています。
どこかに私が活動中にフラグメントをロードすると、GridViewの/ ListView項目がFirstFragment上でクリックされますと、私はロードSecondFragment同じアクティビティでフラグメントを切り替えると同じフラグメントが再開されます

私が追加したフラグメント以下の方法:

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.form_creation_view); 

    Fragment fragment = new FirstFragment(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.form_view, fragment).commit(); 

} 

第2のフラグメント:

Fragment fragment = new SecondFragment(); 
FragmentManager fragmentManager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.replace(R.id.form_view, fragment).commit(); 
MainActivity.javaの

OnBackPress:SecondFragmentがロードされたとき、私はMainactivityに戻るボタンを押したときに

@Override 
public void onBackPressed() { 
    if(getFragmentManager().getBackStackEntryCount() == 0) { 
     super.onBackPressed(); 
    } else { 
     getFragmentManager().popBackStack(); 
    } 
} 

は、それがFirstFragmentに切り替え、それが再びFirstFragmentのonCreateView()メソッドを呼び出します。

FirstFragmentには内部にRecyclerviewがあり、このRecyclerviewにデータをロードするために、OnCreateView()メソッドでAPIリクエストをサーバーに送信します。

このFragmentからSecondFragmentに戻ったときに、リクエストを実行しないようにして、データをRecyclerViewに読み込む必要があります。

どうすればこの問題を解決できますか?
誰でも私を助けてくれますか?

+1

スタートに、このリストを保存する検討すべきです。次に、 'onBackPressed()'メソッドのフラグメント状態を管理する方法を変更します –

+0

あなたができることの1つは、リクエストの時間を節約することと、それを開始する前に最後にあなたが行った時を確認することです – lelloman

+1

簡単な方法2ndFragmentが終了している間はフラグを設定し、1stFragmentのonCreateView()が実行されたときにフラグの値を確認することができます。 – RRTW

答えて

1

はあなたのonCreateViewに、あなたはこのようにチェックを行う必要があります。

if(mList.size() == 0){ 
     //make api call 
    }else{ 
     //set recyclerView adapter 
    } 

この方法は、あなたがRecyclerViewを再作成することができますバックSecondFragmentから来るとき。

また、あなたの活動ののonCreateメソッドにfragmentTransaction.replace`代わりfragmentTransaction.add` ``の使用によってonSaveInstanceState

関連する問題