2015-08-30 5 views
0

Я пытаюсь получить конкретный экземпляр фрагмента, используя его тег, но я использую viewpager, что усложняет ситуацию. Я использовал:Android - getSupportFragmentManager возвращает null

public Fragment getFragmentByPosition(int pos) { 
    String tag = "android:switcher:" + R.id.pager + ":" + pos; 
    FragmentManager fragmentManager = this.getSupportFragmentManager(); 
    Fragment fragment = fragmentManager.findFragmentByTag(tag); 
    return fragment; 
} 

, чтобы найти фрагмент, но getSupportFragmentManager возвращает значение null.

вышеуказанный метод находится в действии, за пределами класса адаптера viewpager, и я настолько потерян относительно того, что здесь делать. Любая помощь будет высоко оценена, спасибо!

+1

Вы используете фрагмент или фрагмент поддержки? –

+0

, пожалуйста, напишите свой полный класс активности –

+0

Я использую фрагмент поддержки из библиотеки поддержки v4 –

ответ

0

Вы можете использовать SmartViewPager здесь https://gist.github.com/jacek-marchwicki/d6320ba9a910c514424d

Расширяет вид пейджера из этого класса и получить фрагмент с помощью метода getActiveFragment. Вы также можете изменить реализацию этого метода, чтобы получить свой фрагмент по имени TAG.

public Fragment getActiveFragment(String name) { 
    final Fragment fragmentByTag = fragmentManager.findFragmentByTag(name); 
    if (fragmentByTag == null) { 
     final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
     fragmentManager.dump("", null, new PrintWriter(outputStream, true), null); 
     final String s = new String(outputStream.toByteArray(), Charsets.UTF_8); 
     throw new IllegalStateException("Could not find fragment via hacky way.\n" + 
       "We were looking for name: " + name + "\n" + 
       "Fragment with this name does not exists, or hack stopped working.\n" + 
       "Current fragment manager dump is: " + s); 
    } 
    return fragmentByTag; 
} 
+0

См. Проблема в том, что я даже не могу получить команду-мульмени, поэтому это не будет работать. Мне все еще нужно дать ему команду-фрагментатор, и поскольку getSupportFragmentManager() не работает, это не будет ... –

Смежные вопросы