【问题标题】:Kotlin - Spinner Fragments Not PopulatingKotlin - Spinner 片段未填充
【发布时间】:2021-09-14 19:35:21
【问题描述】:

我查看了这里的每个线程,但似乎无法弄清楚为什么我的 Spinner 没有填充。我已经尝试了所有这些设置,但似乎无法让我的 Spinners 填充。该应用程序运行良好,但下拉菜单中没有显示任何内容。

在 .kt 文件中

//Setting Spinner Info
        val weight_units = resources.getStringArray(R.array.weight_units)
        val nut_spinner = binding.nutSpinner
        val units = arrayOf("One", "Two", "Three")
        if (nut_spinner != null) {

           /*
            val t = inflater.inflate(com.example.cc_tabbed.R.layout.fragment_main, container, false)
            val spinner = t.findViewById<Spinner>(R.id.nutSpinner) as Spinner
            val adapter = ArrayAdapter.createFromResource(
                this,
                R.array.weight_units, android.R.layout.simple_spinner_item
            )/*

            //val nut_adapter = ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_item, weight_units.toList())
            //val nut_adapter = ArrayAdapter<String>(requireActivity(), android.R.layout.simple_spinner_item, weight_units)
            //val nut_adapter = activity?.let { ArrayAdapter<String>(it, android.R.layout.simple_spinner_item, weight_units) }
            //val nut_adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, weight_units)
            //nut_spinner.adapter = nut_adapter

字符串.xml

<resources>
    <string name="app_name">CC-Tabbed</string>
    <string name="tab_text_1">Converter</string>
    <string name="tab_text_2">Local Database</string>
    <string-array name="weight_units">
        <item>lb</item>
        <item>oz</item>
        <item>gram</item>
    </string-array>
</resources>

.xml 文件中的相关 Spinner

    <Spinner
        android:id="@+id/desSpinner"
        android:layout_width="97dp"
        android:layout_height="36dp"
        android:layout_marginTop="76dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

任何人都可以在这里为我提供任何方向吗?总的来说,我对编程非常陌生,并且只是偶然发现了我的 Android 应用程序的工作版本,但我边走边学,在这里遇到了麻烦。

谢谢!

【问题讨论】:

    标签: android kotlin fragment spinner


    【解决方案1】:

    要通过 xml 在 Spinner 组件中填充数据,您可以使用属性 android:entries 并将字符串数组定义到 strings.xml 文件中,如下所示:

    <Spinner
       android:id="@+id/spinner"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:entries="@array/spinnerData" />
    

    @array/spinnerData 在您的 strings.xml 中定义,如下所示:

    <resources>
        <string-array name="spinnerData">
            <item>Spinner Item 1</item>
            <item>Spinner Item 2</item>
            <item>Spinner Item 3</item>
        </string-array>
    </resources>
    

    或在片段中以编程方式:

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
       super.onViewCreated(view, savedInstanceState)
            
       val spinner = view.findViewById<Spinner>(R.id.spinner)
       val spinnerData = arrayOf("Spinner Item 1", "Spinner Item 2", "Spinner Item 3", "Spinner Item 4")
       spinner.adapter = ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_dropdown_item, spinnerData)
    }
    

    结果:

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      相关资源
      最近更新 更多