isved()与Android片段中的null!= getActivity()相同吗?

Mah*_*raa 1 android android-fragments android-activity

我想知道这两种方法是否会导致相同的结果,或者哪种方法比另一种更好.

if(isAdded()){
//do something with activity since fragment is currently added to its activity.
}
Run Code Online (Sandbox Code Playgroud)

if(null != getActivity()){
//do something with activity. Its not null
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*olf 8

isAdded() 最好在几乎所有情况下使用这两个原因:

  1. isAdded()如果片段当前已添加到其活动,则返回true.getActivity()只返回相关的活动.在大多数情况下,这将返回相同的布尔值,但最好是安全的

  2. 编写的代码较少

源代码:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/app/Fragment.java/

/**
 * Return the Activity this fragment is currently associated with.
 */
final public Activity getActivity() {
    return mActivity;
}

/**
 * Return true if the fragment is currently added to its activity.
 */
final public boolean isAdded() {
    return mActivity != null && mAdded;
}
Run Code Online (Sandbox Code Playgroud)