【问题标题】:Is there any way I can get context from fragmentmanager?有什么方法可以从 fragmentmanager 获取上下文?
【发布时间】:2020-04-11 18:32:49
【问题描述】:

我有一个以FragmentManager 作为接收者的扩展功能。我在至少 75 个地方使用过它。现在我想在那个扩展中访问sharedpreference。我需要的只是该函数内部的上下文。我可以通过什么方式访问上下文?

这是函数的外观,

inline fun FragmentManager?.loadFragment(...){
 ....
 // Loading of fragment
 // inside I want context
}

【问题讨论】:

  • 以上下文为参数的重载方法loadFragment ..
  • 我是这么认为的,我使用了可选参数,但我根本做不到,因为它在多个地方使用,这就是我问的原因。
  • 你无法从FragmentManager 获取上下文,所以我认为这是你应该做的。在某些情况下你不需要上下文所以你可以同时使用这两种变体。

标签: android kotlin kotlin-extension


【解决方案1】:

以上答案返回 null context,因为 @Thomas 不建议使用它。所以我提到了this

【讨论】:

    【解决方案2】:

    可以FragmentManager 获取上下文,但我不建议这样做。

     inline fun FragmentManager?.loadFragment() {
        // Get the context of the last fragment added to the fragment manager
        val context = this?.fragments?.last()?.context
    
     }
    

    【讨论】:

    • 这正是我所做的,唯一的区别是我使用了findFragmentById,我需要上下文是在第二个片段之后。所以这解决了我的问题。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多