37

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

4

4 回答 4

95

将 var 设置为public static,或使用

((MyActivity)getActivity()).getX()
于 2012-09-11T07:05:28.620 回答
18

使用公共静态变量并不是在活动和片段之间进行通信的最佳方式。查看此答案以了解其他方式:

Android 文档建议在Fragment 想要与 Activity 通信时使用接口。当 Activity 想要与 Fragment 通信时,Activity 应该获取对 Fragment 的引用(使用findFragmentById),然后调用 Fragment 的公共方法。

这样做的原因是片段与它们所在的活动分离。它们可以在任何活动中重用。如果您从片段中直接访问父 Activity 或其全局变量之一,您将无法再在不同的 Activity 中使用该片段。

于 2014-09-11T11:24:12.987 回答
11

科特林版本

(activity as MyActivity).x
于 2018-06-19T11:27:25.383 回答
4
***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);
于 2017-12-04T06:34:09.057 回答