как инициализировать (передавать аргументы) фрагменты для вкладок панели действий?

Я следил за http://developer.android.com/guide/topics/ui/actionbar.html#Tabs

Он использует следующий код для добавления Tab.

Tab tab = actionBar.newTab()
            .setText(R.string.artist)
            .setTabListener(new TabListener<ArtistFragment>(
                    this, "artist", ArtistFragment.class));
    actionBar.addTab(tab);

Я хочу предоставить аргумент конструктору фрагмента или вызвать метод myInit(myVariableList) для экземпляра фрагмента перед первым отображением вкладки.

Как я могу это сделать?


person eugene    schedule 04.01.2013    source источник


Ответы (1)


Вы можете использовать tab.setTag(), чтобы связать произвольный объект с вкладкой. Если вы можете поместить myVariableList в Bundle, вы можете получить простое решение, выполнив следующие действия:

Tab tab = actionBar.newTab()
            .setText(R.string.artist)
            .setTabListener(new TabListener<ArtistFragment>(
                    this, "artist", ArtistFragment.class));
    tab.setTag(myVariableBundle);
    actionBar.addTab(tab);

Затем в обратном вызове onTabSelected отправьте Bundle при создании экземпляра фрагмента --

mFragment = Fragment.instantiate(mActivity, mClass.getName(), (Bundle) tab.getTag());

Затем вы сможете получить доступ к своему Bundle во время жизненного цикла фрагмента, используя getArguments()

person iagreen    schedule 04.01.2013
comment
Вау круто. Есть ли способ получить вкладку (класс/тег/что угодно) и также вызвать для нее метод? - person eugene; 04.01.2013
comment
В каком контексте вы хотите получить вкладку? Он уже доступен из контекста создания (как переменная tab) и в методе onTabSelected как параметр tab. - person iagreen; 04.01.2013
comment
задам отдельный вопрос. Спасибо! - person eugene; 04.01.2013