【问题标题】:Accessing the context of a fragment [duplicate]访问片段的上下文 [重复]
【发布时间】:2020-04-08 18:13:34
【问题描述】:

我在一个 android 应用程序 (Kotlin) 上工作,我正在尝试制作一个包含微调器的片段 - 语言列表。虽然我很难将“上下文”传递给 ArrayAdapter。

我尝试使用“this”和“context”。但这些都不起作用。使用“let”进行智能转换并不能解决问题,添加“ifs”进行空值检查也不能解决问题。

如何访问片段的“上下文”?在这里,我有代码检查片段是否已添加到活动中,但编译器仍将其视为“上下文?”不是“上下文”。

class QuickTranslation : Fragment() {

    private lateinit var binding: FragmentQuickTranslationBinding

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val binding = DataBindingUtil.inflate<FragmentQuickTranslationBinding>(
            inflater,
            R.layout.fragment_quick_translation, container, false
        )

        if (isAdded) { // HERE I check if contex is null
            val originalLangSpinner = binding.originalLangSpinner

            ArrayAdapter.createFromResource(
                context, // ERROR Type missmatch. Required: Context, Found: Context?
                R.array.supported_languages,
                android.R.layout.simple_spinner_item
            ).also { adapter ->
                // Specify the layout to use when the list of choices appears
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
                // Apply the adapter to the spinner
                originalLangSpinner.adapter = adapter
            }
        }
        return binding.root
    }

}

【问题讨论】:

  • 试试requireContext() 而不是context

标签: android android-fragments android-activity spinner


【解决方案1】:

您可以在 Fragment 类中使用requireContext()getActivity()

【讨论】:

    【解决方案2】:

    使用activity!! 并从中获取上下文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多