0

Я пытаюсь создать активность с NavigationDrawer и внутри одного фрагмента, я хочу разместить ViewPager. Проблема в том, что когда я пытаюсь создать новый SectionPagerAdapter (класс, расширяющий FragmentPagerAdapter), я не могу получить правильный FragmentManager для конструктора.Не удается получить поддержку FragmentManager внутри фрагмента - ViewPager внутри фрагмента

Существует код onCreateView из navDrawer фрагмента, где я хочу разместить ViewPager:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.layout_anime, container, false); 

    final ActionBar actionBar = getActivity().getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    //There is problem: 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager()); 
    mViewPager = (ViewPager) getActivity().findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      actionBar.setSelectedNavigationItem(position); 
     } 
    }); 

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
     actionBar.addTab(actionBar.newTab() 
       .setText(mSectionsPagerAdapter.getPageTitle(i)) 
       .setTabListener(this)); 
    } 

    return rootView; 
} 

SectionPagerAdapter класс:

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     android.support.v4.app.Fragment fragment = new DummySectionFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
      case 0: 
       return "Section 1".toUpperCase(); 
      case 1: 
       return "Section 2".toUpperCase(); 
      case 2: 
       return "Section 3".toUpperCase(); 
     } 
     return null; 
    } 
} 

и DummySectionFragment:

public static class DummySectionFragment extends android.support.v4.app.Fragment { 
     public static final String ARG_SECTION_NUMBER = "section+number"; 

     public DummySectionFragment() { 
     } 

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

      View rootView = inflater.inflate(R.layout.layout_anime, container, false); 
      ListView listView = (ListView) 

//My code here - http request and listView creating 

     } 

    } 

Теперь у меня есть при вызове getChuldFragmentManager(), в котором говорится, что android.app.FragmentM anager не могут быть применены к android.support.v4.app.FragmentManager

решаемых Я расширялся android.app.Fragment вместо android.support.v4.app.Fragment в моем классе

ответ

0

Согласно этому

android.support.v4.FragmentManager не может быть применен к android.app.FragmentManager

вы используете android.app.FragmentManager в SectionsPagerAdapter классе. Измените его на android.support.v4.FragmentManager.

+0

Извините, я написали это неправильно, я имел в виду, что android.app.FragmentManager не может быть применен к android.support.v4.app.FragmentManager, и я не могу изменить конструктор, потому что тогда я не могу называть super (fragmentManager) правильно – Qiteq

+0

Если ваш фрагмент который содержит эту строку 'mSectionsPagerAdapter = new SectionsPagerAdapter (getChildFragmentManager());' extends фрагмент поддержки 'getChildFragmentManager' возвращает фрагмент поддержки. – faranjit

+0

И это была моя проблема. Я расширил android.app.Fragment вместо android.support.v4.app.Fragment, вы решили эту проблему, спасибо большое! – Qiteq

0

Удалить ваш импортировать import android.app.FragmentManager; и добавить

import android.support.v4.app.FragmentManager;

+0

Я уже импортировал FragmentManager из библиотеки поддержки – Qiteq

+0

ее разрешил faranjit, в любом случае большое спасибо за помощь. – Qiteq