2

Я создал ViewPager с 8 фрагментами, которые используют один и тот же макет xml. Однако я хочу, чтобы разные фрагменты использовали разные контенты. Мне нужно получить идентификатор любого фрагмента, чтобы я мог загрузить конкретный контент на этот фрагмент.Как получить идентификатор текущего фрагмента?

Я попытался

extras.putInt(Globals.KEY_CATEGORY_POSITION, position); 
fragment.setArguments(extras); 

в методе GetItem (INT позиция) на FragmentPagerAdapter.

Затем я получаю положение фрагмента в классе фрагментов. Когда я это делаю, я перехожу от 0 до 7, когда я распечатываю позицию каждого фрагмента, но затем все они увеличиваются до 7, поэтому все они становятся одним и тем же фрагментом.

Есть ли другой способ получить идентификатор для каждого фрагмента?

+0

Вы можете использовать свойство tag для идентификации фрагмента в ViewPager –

ответ

3

Вот довольно хороший пример:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock-samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentPagerSupport.java

При создании фрагмента:

 Bundle args = new Bundle(); 
     args.putInt("num", num); 
     f.setArguments(args); 

А потом в фрагмент:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    } 
+0

Это сработало отлично! Спасибо огромное! –

0

Бросьте это внутри FragmentPagerAdapter :)

public Fragment getActiveFragment(ViewPager container, int position) { 
    String name = makeFragmentName(container.getId(), position); 
    return mFragmentManager.findFragmentByTag(name); 
} 

private static String makeFragmentName(int viewId, int index) { 
    return "android:switcher:" + viewId + ":" + index; 
} 
Смежные вопросы