Java 在片段中有一个指向活动的实例变量安全吗?

Java 在片段中有一个指向活动的实例变量安全吗?,java,android,android-fragments,Java,Android,Android Fragments,我需要我的应用程序与平板电脑兼容,所以我将一些活动类转换为片段类。然而,在我的类的活动版本中,我有很多this,getSupportActionBar,ContextCompat.getColor(this,…),它们不适用于片段,因此我的所有函数都以以下语句开头: final AppCompatActivity activity = (AppCompatActivity) getActivity(); 然后我将此替换为活动,getSupportActionBar替换为活动.getSuppor

我需要我的应用程序与平板电脑兼容,所以我将一些活动类转换为片段类。然而,在我的类的活动版本中,我有很多
this
getSupportActionBar
ContextCompat.getColor(this,…)
,它们不适用于片段,因此我的所有函数都以以下语句开头:

final AppCompatActivity activity = (AppCompatActivity) getActivity();
然后我将
替换为
活动
getSupportActionBar
替换为
活动.getSupportActionBar
,等等


我的问题很简单:在片段类中有一个实例变量来存储对活动的引用,以避免在我的所有方法中声明
activity
变量,这是内存泄漏安全的吗。这个问题可能看起来很愚蠢,但我承认我不太了解活动中的内存泄漏,而且我发现很多文章和帖子都告诉我要小心,我有点害怕滥用活动。

是的,这样做是安全的,更好的方法是使用getActivity()不要做任何引用。

是的,这样做是安全的,更好的方法是只使用getActivity(),不要做任何引用。

您应该能够用
getActivity()
替换
的大多数情况。始终使用此getter,因为活动引用可以更改(例如:方向更改)。但是,请记住您调用它的上下文
getActivity()
将在附加片段之前和分离片段之后返回
null
。如果您将其保留在生命周期内,通常应该是安全的。

您应该能够用
getActivity()
替换大多数情况下的
。始终使用此getter,因为活动引用可以更改(例如:方向更改)。但是,请记住您调用它的上下文
getActivity()
将在附加片段之前和分离片段之后返回
null
。如果您将其保留在生命周期内,通常应该是安全的。

OK thanx,实际上到处调用getActivity()会使我的代码非常难看,尤其是当我必须强制转换它时。亲爱的,我可以理解。OK thanx,实际上到处调用getActivity()会使我的代码非常难看,特别是当我必须强制转换它时。亲爱的,我可以理解。