Почему Android 15 Spinner показывает, когда элементы загружаются в дизайнерском представлении, но не программно?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему Android 15 Spinner показывает, когда элементы загружаются в дизайнерском представлении, но не программно?

Сообщение Anonymous »

У меня есть планшет Android 15. Я хочу создать спиннер. Спиннер находится в основной деятельности, но я хочу получить к нему доступ через фрагмент
Я использовал следующий фрагмент кода в методе фрагментов oncreateview :

Код: Выделить всё

dd1  = (requireActivity() as MainActivity).spinner

ArrayAdapter.createFromResource(
requireContext(),
R.array.videoEntries,             // 
// 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.
dd1.adapter = adapter
Log.d("Monsoon SPINNER", "spinner adapter ready")
}

return view
< /code>
К сожалению, прядильщик ничего не покажет, если стрелка вниз была нажата. Я видел этот вопрос и применил Fix view.findviewbyid (r.id.spinner) 
, но улучшения не было. Запрос высоты/ширины и т. Д. Спиннера будет возвращать 0 - хотя, в макете XML, раскрывающийся список ширина явно устанавливается на 160 др. Не сработал, Dropwdown все еще не показывается. < /P>
Тогда я попробовал < /p>

Код: Выделить всё

dd1.post {
try {
dd1.performClick() // Now safe
} catch (e: Exception) {
Log.e("SPINNER", "Failed to open dropdown: ${e.message}")
}
}
< /code>
Все еще без успеха. < /p>
Обратите внимание, что если я запрошу элементы прядильщика после настройки адаптера как SO: < /p>
if (adapter != null) {
val stringBuilder = StringBuilder("Spinner Content:\n")
for (i in 0 until adapter.count) {
val item = adapter.getItem(i)
stringBuilder.append("Index $i: $item\n")
}
// Print to Logcat
println(stringBuilder.toString()) // or Log.d("SpinnerContent", stringBuilder.toString())

// Optionally, show as a Toast (for debugging on device)
Toast.makeText(this, stringBuilder.toString(), Toast.LENGTH_LONG).show()

}
< /code>
Я бы увидел элементы во всех случаях. Обратите внимание, что режим Spinner устанавливается как Android: spinnermode = "Dropdown" 
В макете xml.
Наконец, я решил, назначив массив записей непосредственно в дизайнерском представлении
Я прохожу я прохожу. /> Почему это назначение массива в дизайнерском представлении, но программически это не так? Я не мог найти ничего, чтобы объяснить это поведение. Обратите внимание, что приложение состоит в том, чтобы управлять беспилотником DJI, и прядильщик будет работать, даже если установить программно без каких -либо проблем, на дистанционных управлениях DJI, которые запускают Android 10. На табличке Samsung у меня была эта проблема.
Что я делаю не так?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ut-not-pro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»