0

私は2つのフラグメント(A/B)を持つViewPager(アダプタ)を持つフラグメント(C)を持っています。 フラグメントを一度呼び出すと、正常に読み込まれます。 しかし、断片(C)を呼び出すとき、フラグメントAとBは、ビューonCreateViewメソッドを呼び出さず、ロードされません。Reload Fragment、フラグメントdont call onCreateView

フラグメントCがFragmetnmangerと呼ばれる:

FragmentC fragment = new FragmentC(); 
      getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.adressenmdf_detail_container, fragment).addToBackStack(null).commit(); 

フラグメントC

public BelegeDetails(){ 

} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_belege_details, container, false); 
    //TODO Actionbar noch anpassen 
    //getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



    viewPager = (ViewPager) rootView.findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) rootView.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    setupTabIcons(); 

フラグメントCからセットアップ

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(this.getFragmentManager()); 

    adapter.addFragment(new BelegeDetails1(),"Details"); 
    adapter.addFragment(new BelegeDetailsPos(), "Positionen"); 
    viewPager.setAdapter(adapter); 
} 
private void setupTabIcons() { 
    tabLayout.getTabAt(1).setIcon(R.drawable.ic_belege); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 

    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

フラグメントA BelegDetails1フラグメントBのBelegDetailsPosをUNDれます通常のフラグメントクラス:

public BelegeDetails1() { 
    // Required empty public constructor 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState....... 

答えて

2

これを変更してみてください:

ViewPagerAdapter adapter = new ViewPagerAdapter(this.getFragmentManager()); 

と:

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 

あなたが断片をネストされているので、あなたの代わりにgetFragmentManager()

+0

非常に大きな感謝のgetChildFragmentManager()を使用する必要がある、それが動作します! – Metti

関連する問題