【问题标题】:Where is the supportFragmentManager variable defined?supportFragmentManager 变量在哪里定义?
【发布时间】:2020-05-27 07:51:13
【问题描述】:

我正在使用 Kotlin 进行开发。当我到达官方 Android 教程的片段部分时,我遇到了 supportFragmentManager。在 Kotlin 中可以用作变量,而在 java 中我们可以调用它的等效方法getSupportFragmentManager()

我想知道 supportFragmentManager 变量在哪里定义,因为我看不到任何类似具有该名称的变量声明,但是单击该变量将我带到 fragmentActivity.java 类中的以下方法。

/**
 * Return the FragmentManager for interacting with fragments associated
 * with this activity.
 */
public FragmentManager getSupportFragmentManager() {
    return mFragments.getSupportFragmentManager();
}

如何在 Kotlin 中将这个方法作为变量访问,而在 java 中我们必须像常规方法一样访问?任何帮助将不胜感激。

【问题讨论】:

  • Kotlin 只有属性,它会自动将 java getter 和 setter 转换为属性。
  • Kotlin 用合成糖替换了 getter 和 setter 调用,k0ma.co.za/blog/2018/11/04/JavaToKotlin-pt3 普通变量调用 getter,而分配变量(带 =)调用各自的 setter。
  • 像往常一样,另一个很好的描述@AnimeshSahu。

标签: android kotlin android-fragment-manager


【解决方案1】:

实际上,在 Kotlin 中,当您调用 supportFragmentManager 时它不是变量,任何 Java 方法在 Kotlin 中的方法中包含 get 前缀(不带参数)都会像没有 get 字的变量一样调用

遵循 Java 的 getter 和 setter 约定的方法(名称以 get 开头的无参数方法和名称以 set 开头的单参数方法)在 Kotlin 中表示为属性。布尔访问器方法(其中 getter 的名称以 is 开头,setter 的名称以 set 开头)表示为与 getter 方法同名的属性。

阅读更多关于here

【讨论】:

  • 谢谢,现在知道了。
【解决方案2】:

这有点像 Kotlin 中的 getter 和 setter 方法。您无需描述 getProperty()setProperty() 方法来访问/更新属性值。

您可以通过此question/answers 中的示例了解更多关于它的实际工作原理。

希望对你有所帮助。 编码快乐..!

【讨论】:

  • 是的,谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多