Android:片段如何获取Activity的全局变量

eso*_*oni 32 java variables android android-fragments access

我有一个带有全局变量int x的活动,片段如何获得其活动的变量x的当前值?

Ste*_*ght 94

将var设置为public static,或使用

((MyActivity)getActivity()).getX()
Run Code Online (Sandbox Code Playgroud)

  • 根据Android Studio lint警告,将变量设置为`static`(就像我一直在做的那样)显然会导致内存泄漏.我将使用后一种方法. (4认同)

Sur*_*gch 17

使用公共静态变量不是在活动和片段之间进行通信的最佳方式.有关其他方法,请查看此答案:

Android文档建议当片段要与活动通信用的接口.当Activity想要与Fragment通信时,Activity应该获得对Fragment的引用(使用findFragmentById),然后调用Fragment的公共方法.

这样做的原因是碎片与它们所处的活动分离.它们可以在任何活动中重复使用.如果直接从片段中访问父Activity或其中一个全局变量,则无法再在其他Activity中使用该片段.


Man*_*ddy 9

Kotlin版本

(activity as MyActivity).x
Run Code Online (Sandbox Code Playgroud)