2

Так что в основном я использую один и тот же тип фрагмента в двух разных действиях, и я хочу создать и инициализировать некоторую переменную во фрагменте, только если он был добавлен из определенной активности. Мой вопрос в том, как я могу программным образом узнать, в какой деятельности был добавлен фрагмент.Узнайте, в каком фрагменте активности был добавлен

ответ

3

там уже два основных способа его достижения:

менее модульный подход, вы просто проверить с помощью instanceof

if(getActivity() instanceof MyActivity) 

и более модульный подход, вы передать некоторые аргументы фрагмента на момент, когда вы будете добавить его к сделке:

// this during the transaction to pass extra parameters to the fragment 
Fragment f = new MyFragment(); 
Bundle b = new Bundle(); 
b.putBoolean("doExtraCode", true); 
f.setArguments(b); 

затем внутри фрагмента:

// check if should execute extras 
Bundle b = getArguments(); 
boolean doExtraCode = b == null? false: b.getBoolean("doExtraCode", false); 
+0

Мне нравится второе решение гораздо больше, чем первое. Фрагменты должны, насколько это возможно, быть независимыми от действий, которые их размещают (это своего рода точка использования фрагментов). –

+0

Я полностью согласен с @BobbyStJacques, «более модульный подход» всегда лучше в абсолютно любой ситуации кодирования. Я только показал первый для полноты. – Budius

+0

Спасибо, хорошо сработал для меня. – Daniel

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