У меня есть активность с глобальной переменной int x, как можно фрагментировать, чтобы получить текущее значение переменной x его активности?
Android: как фрагмент может принимать глобальную переменную Activity
Ответ 1
Либо установите var как public static
, либо используйте
((MyActivity)getActivity()).getX()
Ответ 2
Использование общедоступной статической переменной - не лучший способ связи между активностью и фрагментом. Проверьте этот ответ для других способов:
Документация для Android рекомендует использовать интерфейс, когда Fragment хочет связываться с Activity. И когда Activity хочет связаться с Фрагментом, Activity должно получить ссылку на фрагмент (с findFragmentById), а затем вызвать Открытый метод фрагментации.
Причиной этого является то, что фрагменты отделены от активности, в которой они находятся. Их можно использовать повторно в любом действии. Если вы напрямую обращаетесь к родительской активности или одной из ее глобальных переменных изнутри фрагмента, вы больше не сможете использовать этот фрагмент в другой Деятельности.
Ответ 3
***In your Activity
==================
Bundle args = new Bundle();
args.putInt("something", Whatever you want to pass);
fragA.setArguments(args);
In your Fragment
==================
Bundle args = getArguments();
//whatever you want to get ,get it here.
//for example integer given
int index = args.getInt("index", 0);