Note that there are some explanatory texts on larger screens.

plurals
  1. POUnable to use getChildFragmentManager() in a fragment that was added to ViewPager
    primarykey
    data
    text
    <p>I have an app that is using <code>ActionbarSherlock</code>, <code>SlidingMenu</code>, and also <code>ViewPager</code>. This app works well but I am trying to introduce using Nested Fragment into the <code>ViewPager</code>.</p> <p>Currently I have one fragment for each page of the <code>ViewPager</code> but I want to have 1 to 4 Nested Fragments in page fragment, depending on weather I am displaying on a phone or tablets. So if I am on a phone I will say have 14 pages in the <code>ViewPager</code> but on a tablet I want to combine those pages utilizing nested fragments.</p> <p>Here is the code that I trying to do but It will not allow me to use <code>getChildFragmentManager()</code>. It states that <code>getChildFragmentManager()</code> is undefined :</p> <pre><code>public class CharacterManualActivity extends BaseActivity { private ViewPager mViewPager; private TabsAdapter mTabsAdapter; Boolean tabletLayout = false; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); // Check from the Saved Instance characterUri = (savedInstanceState == null) ? null : (Uri) savedInstanceState.getParcelable(CharacterTable.CONTENT_ITEM_TYPE); // Passed from the activity if (extras != null) { viewMode = extras.getInt("ViewMode"); characterUri = extras.getParcelable(CharacterTable.CONTENT_ITEM_TYPE); } mViewPager = new ViewPager(this); mViewPager.setId(R.id.pager); setContentView(mViewPager); final ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mTabsAdapter = new TabsAdapter(this, mViewPager); if (tabletLayout) { mTabsAdapter.addTab(bar.newTab().setText("Stats"), CSheetStatsFragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Abilities"), CSheet2Fragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Classes"), CSheet3Fragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Attacks/Defense"), CSheetAttacksFragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Weapons"), CSheet5Fragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Armor"), CSheet14Fragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Skills"), CSheetSkillsFragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Feats"), CSheet7Fragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Special Abilities/Race Features/Traits"), CSheet8Fragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Equipment"), CSheetEquipmentFragment.class, null); // mTabsAdapter.addTab(bar.newTab().setText("Worn Equipment"), CSheet10Fragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Spellbook"), CSheetSpellbookFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Familiar/Companion"), CSheetFamiliarFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Notes"), CSheetNotesFragment.class, null); } else { mTabsAdapter.addTab(bar.newTab().setText("Stats"), CSheetStatsFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Abilities"), CSheetAbilitiesFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Classes"), CSheetClassesFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Attacks/Defense"), CSheetAttacksFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Weapons"), CSheetWeaponsFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Armor"), CSheetArmorFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Skills"), CSheetSkillsFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Feats"), CSheetFeatsFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Special Abilities/Race Features/Traits"), CSheetSpecialTraitsFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Equipment"), CSheetEquipmentFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Worn Equipment"), CSheetWornEquipmentFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Spellbook"), CSheetSpellbookFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Familiar/Companion"), CSheetFamiliarFragment.class, null); mTabsAdapter.addTab(bar.newTab().setText("Notes"), CSheetNotesFragment.class, null); } ... } ... } public class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener , ViewPager.OnPageChangeListener{ private final Context mContext; private final ActionBar mActionBar; private final ViewPager mViewPager; private final ArrayList&lt;TabInfo&gt; mTabs = new ArrayList&lt;TabInfo&gt;(); private final String TAG = "21st Polling:"; static final class TabInfo{ private final Class&lt;?&gt; clss; private final Bundle args; TabInfo(Class&lt;?&gt; _class, Bundle _args){ clss = _class; args = _args; } } public TabsAdapter(SherlockFragmentActivity fa, ViewPager pager) { super(fa.getSupportFragmentManager()); mContext = fa; mActionBar = fa.getSupportActionBar(); mViewPager = pager; mViewPager.setAdapter(this); mViewPager.setOnPageChangeListener(this); } public void addTab(ActionBar.Tab tab, Class&lt;?&gt; clss, Bundle args){ TabInfo info = new TabInfo(clss, args); tab.setTag(info); tab.setTabListener(this); mTabs.add(info); mActionBar.addTab(tab); notifyDataSetChanged(); } @Override public void onPageScrollStateChanged(int state) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mActionBar.setSelectedNavigationItem(position); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { mViewPager.setCurrentItem(tab.getPosition()); Log.v(TAG, "clicked"); Object tag = tab.getTag(); for (int i = 0; i&lt;mTabs.size(); i++){ if (mTabs.get(i) == tag){ mViewPager.setCurrentItem(i); } } } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // Toast.makeText(mContext, "You've deselected a tab", Toast.LENGTH_SHORT).show(); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public Fragment getItem(int position) { TabInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } @Override public int getCount() { return mTabs.size(); } } public class CSheet1Fragment extends Fragment { Boolean tabletLayout = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.csheet1, null); Fragment tempFragment = new CSheetStatsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.flStats, tempFragment); transaction.commit(); return v; } } </code></pre> <p>Does anyone know what I am doing wrong? I have also made sure that I am using the latest support library and so is <code>ActionbarSherlock</code>.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload