【问题标题】:Difference between extending Activity vs AppCompatActivity扩展 Activity 与 AppCompatActivity 之间的区别
【发布时间】:2020-12-01 03:12:12
【问题描述】:

我在我的应用活动中使用此扩展功能进行视图绑定:

inline fun <T : ViewBinding> Activity.viewBinding(crossinline bindingInflater: (LayoutInflater) -> T) = lazy(NONE) {
  bindingInflater.invoke(layoutInflater).also { setContentView(it.root) }
}

我的 BaseActivity 扩展自 AppCompatActivity。我应该将扩展函数更改为 AppCompatActivity.viewBinding... 而不是 Activity.viewBinding... 吗?

有什么区别吗?

【问题讨论】:

  • 为此,您的代码似乎应该适用于ActivityAppCompatActivity 继承自 Activity,所以这个扩展函数也适用于扩展 AppCompatActivity 的任何东西。
  • 它工作正常,是的,但使用 AppCompatActivity 会更合适吗?还是没关系?
  • 这里,没关系。如果您正在做一些需要 AppCompatActivity 独有的功能或属性的事情,那么您需要将您的扩展功能放在 AppCompatActivity 上。

标签: android kotlin


【解决方案1】:

我认为这是一个意见,但我个人认为最好尽可能笼统,而不会失去太多意义。

就像使用List 作为类型而不是ArrayList 更好,因为它不依赖于ArrayList 特定的任何东西,并且您希望它可以用于任何东西。

尽管您可能不想创建 Collection 类型,即使它适用于所有集合,只是因为您鼓励在此代码中使用列表,而泛化过多会使意图和设计更加困难跟随,可能没有任何好处!

所以就我个人而言,我可能会选择Activity,因为这就是它的运作方式,而且它的功能更清楚——这里没有什么特定于AppCompatActivity,它只是关于一般的活动。但是如果你想在代码库中强制使用AppCompatActivity(因为你真的应该在任何地方都使用它),那么这是另一种方法。由你决定!

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2017-09-29
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2019-07-12
    • 2011-03-30
    • 2016-03-23
    相关资源
    最近更新 更多