Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid getting fragment that is in FragmentPagerAdapter
    primarykey
    data
    text
    <p>I have following problem: I have one activity in which I have two tabs which are made both as fragments using <strong>FragmentPagerAdapter</strong> In some moment I would like to change View of one of these fragments, but I am not able to <strong>findFragmentById()</strong> or <strong>findFragmentByTag()</strong> I am unable to set id, because I am not declaring Fragment in XML, because of the <strong>FragmentPagerAdapter</strong> And when I am trying to set tag I am getting following problem:</p> <pre><code>08-15 21:46:23.805: E/AndroidRuntime(9297): java.lang.IllegalStateException: Can't change tag of fragment Companies{416d7b78 id=0x7f04002e companies}: was companies now android:switcher:2130968622:1 </code></pre> <p>My code of the pager <strong>FragmentPagerAdapter</strong>:</p> <pre><code>public class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener, ViewPager.OnPageChangeListener { private final FragmentActivity mContext; private final ActionBar mActionBar; private final ViewPager mViewPager; private final ArrayList&lt;TabInfo&gt; mTabs = new ArrayList&lt;TabInfo&gt;(); 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 activity, ViewPager pager) { super(activity.getSupportFragmentManager()); mContext = activity; mActionBar = activity.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 int getCount() { return mTabs.size(); } @Override public Fragment getItem(int position) { TabInfo info = mTabs.get(position); FragmentTransaction ft=mContext.getSupportFragmentManager().beginTransaction(); Fragment fragment=Fragment.instantiate(mContext, info.clss.getName(), info.args); if(position==1){ ft.add(mViewPager.getId(), fragment, "companies"); }else{ ft.add(mViewPager.getId(), fragment); } Log.v("FRAGMENT ID", "fragment tag: "+fragment.getTag()); ft.commit(); Log.v("FRAGMENT ID", "fragment tag: "+fragment.getTag()); return fragment; } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mActionBar.setSelectedNavigationItem(position); new Thread(new Runnable() { @Override public void run() { MainActivity.this.hideKeyboard(); } }).start(); } @Override public void onPageScrollStateChanged(int state) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { 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) { } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } } </code></pre> <p>Thank you in advance for your answers.</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.
 

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