with viewpager tab sirve que para fragments example android android-viewpager fragment fragmentpageradapter

android - tab - Fragmento en ViewPager, no se puede obtener la instancia actual de Fragment



viewpager android example (0)

En la clase FragmentParentNewsDetail.java, tengo una ViewPager, luego uso FragmentPagerAdapter para configurar cada página con el mismo Fragment, así:

@Override public Fragment getItem(int position) { String newsId = this.myNewsIds.get(position); Bundle bundle = new Bundle(); bundle.putInt(FragmentNewsDetail.NEWS_ID, Integer.parseInt(newsId)); FragmentNewsDetail fragmentNewsDetail = new FragmentNewsDetail(); fragmentNewsDetail.setArguments(bundle); return fragmentNewsDetail; }

en el FragmentNewsDetail.java, tengo un método público:

public String getNewsTitle() { Log.d(TAG, "getNewsTitle:" + newsTitle); return newsTitle; }

entonces quiero llamar al método getNewsTitle () en FragmentNewsDetail.java así:

newsTitle = ((FragmentNewsDetail)myAdapter.getItem(vpViewPager.getCurrentItem())).getNewsTitle();

Pero getNewsTitle () siempre devuelve "", estoy confundido acerca de eso.

Reparado por el siguiente método:

public Fragment getCurrentFragment(ViewPager pager, FragmentPagerAdapter adapter) { try { Method m = adapter .getClass() .getSuperclass() .getDeclaredMethod("makeFragmentName", int.class, long.class); Field f = adapter.getClass().getSuperclass() .getDeclaredField("mFragmentManager"); f.setAccessible(true); FragmentManager fm = (FragmentManager) f.get(adapter); m.setAccessible(true); String tag = null; tag = (String) m.invoke(null, pager.getId(), (long) pager.getCurrentItem()); return fm.findFragmentByTag(tag); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return null; }

from: Cómo obtener fragmentos existentes al usar FragmentPagerAdapter

¡Muchas gracias!