我有一个有全局变量 int x 的活动,如何让片段获取其活动的变量 x 的当前值?
我有一个有全局变量 int x 的活动,如何让片段获取其活动的变量 x 的当前值?
要么将变量设置为public static
,或者使用
((MyActivity)getActivity()).getX()
使用公共静态变量不是活动和片段之间通信的最佳方式。请参考此答案获取其他方法:
Android文档建议,当碎片需要与活动进行通信时,使用接口。而当活动需要与片段进行通信时,活动应该获取对片段的引用(使用findFragmentById),然后调用片段的公共方法。
这样做的原因是为了使片段与其所在的活动解耦。它们可以在任何活动中重复使用。如果您直接从片段内访问父活动或其全局变量,则无法在不同的活动中使用该片段。
Kotlin版本:
(activity as MyActivity).x
***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);
static
会导致内存泄漏。因此,我将采用后一种方法。请注意,这里的“后一种方法”指代的是上下文中提到的另一种变量设置方式,具体内容未给出。 - Farbod Salamat-Zadeh