Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:fragment如何获取活动的全局变量_Java_Android_Variables_Android Fragments - Fatal编程技术网

Java Android:fragment如何获取活动的全局变量

Java Android:fragment如何获取活动的全局变量,java,android,variables,android-fragments,Java,Android,Variables,Android Fragments,我有一个全局变量int x的活动,片段如何获取其活动的变量x的当前值?将变量设置为公共静态,或者使用 ((MyActivity)getActivity()).getX() 使用公共静态变量不是活动和片段之间通信的最佳方式。查看其他方式: 建议在片段需要与活动通信时使用接口。当活动想要与片段通信时,活动应该获取对片段的引用(使用),然后调用片段的public方法 这样做的原因是片段与它们所在的活动解耦。它们可以在任何活动中重用。如果从片段中直接访问父活动或其全局变量之一,则无法再在其他活动中使用

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

将变量设置为
公共静态
,或者使用

((MyActivity)getActivity()).getX()

使用公共静态变量不是活动和片段之间通信的最佳方式。查看其他方式:

建议在片段需要与活动通信时使用接口。当活动想要与片段通信时,活动应该获取对片段的引用(使用),然后调用片段的public方法


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

Kotlin版本

***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);
(activity as MyActivity).x

根据androidstudio lint警告,将变量设置为
static
(就像我之前所做的那样)显然会导致内存泄漏。我将使用后一种方法。如何在Kotlin中做到这一点?我已经在使用公共静态。问题是我使用截击获取json数据。所以我试图在数据返回之前获取视图。我不知道什么是记忆线索。感谢您,这不是将活动与片段紧密地结合在一起,从而限制了灵活性和可重用性吗?在创建了需要在活动中完成的片段之后,但是如果我们这样做,为什么不能在不同的活动中使用片段呢。@ams92,因为片段仍然依赖于旧活动。每次您想在新活动中使用片段代码时,都必须对其进行更改。