2017-01-01 14 views
1

背景ViewPagerフラグメント負荷

私はいくつかのメニュー項目の選択に基づいて2つの断片

public class ActivityMain extends AppCompatActivity{ 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if(savedInstanceState == null) { 
      loadFragment(1); // DEFAULT FRAGMENT, AT THE BEGINNING 
     } 
    } 
    .......................... 
    .......................... 
    // This method is called above, ALSO onItemClick in the Navigation Drawer (code not included for brevity) 
    public void loadFragment(int position) { 
     Fragment fragment = null; 
     switch (position) { 
      case 1: 
       fragment = new Fragment1(); 
       break; 
      case 2: 
       fragment = new Fragment2(); 
       break; 
      default: 
       break; 
     } 
     if (fragment != null) { 
      getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, "frag_" + position).addToBackStack(null).commit(); 
     } 
    } 
} 

をロードする私のアプリでは、単一の活性を有する「Fragment1」されますTextView内の固定テキストを持つ単純なフラグメント。 「Fragment2」は、SlidingTabLayoutを使用して、FragmentStatePagerAdapterを使用してビューページ内にFragment "FragmentViewPager"をロードします。

問題私が直面しています:

を、私は、フラグメント "FragmentViewPager" は破壊されません(。。getFragmentManager()のbeginTransaction()削除を使用して)活動のフレームレイアウトから "Fragment2" を削除しても、アクティビティが再開するたびに再開します。

質問

FragmentViewPagerが "Fragment2" で破壊されないのはなぜ?

+0

アクティビティ – Godwin

+0

でのloadFragment()コールの場所は2つあります。1)onCreateメソッドのIF savedInstanceState == null ...および2)Navigation DrawerアイテムのonClickイベント。 – abdfahim

+0

もう一度、FragmentViewPagerはどこにありますか? – Godwin

答えて

0

FragmentStatePagerAdapterを使用している場合、これでフラグメントが破棄されることはなく、そのフラグメントにスワイプして戻ってくると、更新されずに古いデータが表示されます。ビューページによって破壊されないためです。

+0

私はスワイプについては言及していませんが、アクティビティのフレームレイアウトから「Fragment2」(ビューページを含む)を削除しています。 – abdfahim

+0

フラグメントを手動で追加した場合は、このリンクを参照することができますが、フラグメントを削除する方法は1つしかありません[link] http://stackoverflow.com/questions/10396321/remove-fragment-page-from-viewpager-in-android –