AppCompatActivity设计
AppCompatActivity design
为什么 AppCompatActivity
的 getFragmentManager()
return 没有片段管理器的支持版本?相反,您必须将 Activity 设为 AppCompatActivity
并专门调用 getSupportFragmentManager()
。其他十几种方法也是如此。让我感到困扰的是,您必须神奇地知道可以调用哪些方法本身,以及必须将哪些方法重新标记为 "support" 版本。当您仍然支持较低版本的 Android 时,甚至有任何用例想要调用 "normal" 版本而不是 "support" 版本吗?如果 AppCompatActivity
的功能与后来的 API 版本的 Activity
没有区别,那对我来说就更有意义了——毕竟,这就是它应该做的,不是吗?提供与 Activity
?
的后续 API 版本相同的功能
是否有某种设计原则或隐藏的 Java 限制阻止他们这样做?
Why doesn't AppCompatActivity's getFragmentManager() return a support version of the fragment manager?
因为不能。
Activity
,在 API 级别 11+ 上,将 getFragmentManager()
定义为 returning 一个 android.app.FragmentManager
。 AppCompatActivity
可以覆盖它的唯一方法是覆盖方法 也 return 是 android.app.FragmentManager
。那是不可能的。 AppCompatActivity
旨在回到 API 级别 7,其中没有 android.app.FragmentManager
到 return。因此,我们有 getSupportFragmentManager()
, returning 一个 android.support.v4.app.FragmentManager
.
请注意,AppCompactActivity
确实从 FragmentActivity
获取其片段,其设计目的是回到 API 4 级,两年前 API 11 级和原生片段已实施。
为什么 AppCompatActivity
的 getFragmentManager()
return 没有片段管理器的支持版本?相反,您必须将 Activity 设为 AppCompatActivity
并专门调用 getSupportFragmentManager()
。其他十几种方法也是如此。让我感到困扰的是,您必须神奇地知道可以调用哪些方法本身,以及必须将哪些方法重新标记为 "support" 版本。当您仍然支持较低版本的 Android 时,甚至有任何用例想要调用 "normal" 版本而不是 "support" 版本吗?如果 AppCompatActivity
的功能与后来的 API 版本的 Activity
没有区别,那对我来说就更有意义了——毕竟,这就是它应该做的,不是吗?提供与 Activity
?
是否有某种设计原则或隐藏的 Java 限制阻止他们这样做?
Why doesn't AppCompatActivity's getFragmentManager() return a support version of the fragment manager?
因为不能。
Activity
,在 API 级别 11+ 上,将 getFragmentManager()
定义为 returning 一个 android.app.FragmentManager
。 AppCompatActivity
可以覆盖它的唯一方法是覆盖方法 也 return 是 android.app.FragmentManager
。那是不可能的。 AppCompatActivity
旨在回到 API 级别 7,其中没有 android.app.FragmentManager
到 return。因此,我们有 getSupportFragmentManager()
, returning 一个 android.support.v4.app.FragmentManager
.
请注意,AppCompactActivity
确实从 FragmentActivity
获取其片段,其设计目的是回到 API 4 级,两年前 API 11 级和原生片段已实施。