Здравствуйте, я модифицировал приложение, и я следовал приведенным Android-примерам при создании Spinner, но мое приложение зависает при загрузке, точная часть, которая дает сбой, это spinner.adapter = adapter ,Приложение использует фрагментированный вид, и я попытался поместить следующий код в onCreate и onViewCreated, но оба приложения вылетали?Что я делаю не так, я прочитал 4 соответствующих поста, но они используют Java и имели проблемы с получением нулевых значений, но мой код должен загрузить статический массив, уже созданный в strings.xml.
ниже.перечислил весь код, который я реализовал для этой коробки Spinner, я что-то пропустил?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val spinner = R.id.modeSpinner as Spinner
val arrayAdapter = ArrayAdapter.createFromResource(activity, R.array.rgb_mode_options, android.R.layout.simple_spinner_dropdown_item)
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.adapter = arrayAdapter
}
и в моих strings.xml
<string-array name="rgb_mode_options">
<item>Steady On</item>
<item>Pulse</item>
<item>Chase</item>
<item>Rainbow</item>
<item>Comet</item>
<item>Candle</item>
<item>Warm White</item>
<item>Cool White</item>
</string-array>
и main.xml
<Spinner
android:id="@+id/modeSpinner"
android:layout_width="182dp"
android:layout_height="31dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="312dp"
android:spinnerMode="dropdown"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
и, наконец, SpinnerActivity, которая находится в отдельной вкладке с именем SpinnerActivity.kt
package com.thanksmister.iot.esp8266.vo
import android.app.Activity
import android.view.View
import android.widget.AdapterView
import android.widget.Toast
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
Toast.makeText(applicationContext, pos, Toast.LENGTH_LONG).show()
}
override fun onNothingSelected(parent: AdapterView<*>) {
// Another interface callback
}
}
Учебник Spinner
РЕДАКТИРОВАТЬ: я пробовал
super.onCreate(savedInstanceState)
setContentView(getLayoutId())
setSupportActionBar(toolbar)
val spinner = findViewById<Spinner>(R.id.modeSpinner)
val arrayAdapter = ArrayAdapter.createFromResource(this,
R.array.rgb_mode_options, android.R.layout.simple_spinner_dropdown_item)
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.adapter = arrayAdapter
Но я смотрю на logcat и вижу
Причина: java.lang.IllegalStateException: спиннер не должен быть нулевым