AutoCompleteTextView (setText) и fragment.detach (). Attach ()

Я делаю приложение и добавляю эту функцию изменения языка. Я меняю язык во фрагменте из используемого MainActivity

...
        val locale = Locale("es")
        Locale.setDefault(locale)
        val configuration = Configuration()
        configuration.locale = locale
        this.resources.updateConfiguration(configuration, null)
...
 supportFragmentManager.beginTransaction().
           detach(scaleFragment).attach(scaleFragment).commit
... 

во фрагменте CreateView

    ...
    val listSpeed = Scales.initSpeedsList().map{String.format("%.1f", it)}
  
    val adapterSpeed: ArrayAdapter<String> = ArrayAdapter(
            requireContext(),
            R.layout.list_item_scale,
            listSpeed)
    
    bindingScale.editSpeed.setAdapter(adapterSpeed)
    bindingScale.editSpeed.setText(bindingScale.editSpeed.adapter.getItem(1).toString(), false)//1
    ...

если я закомментирую строку 1 (setText), то поле будет пустым, а раскрывающийся список состоит из 5 строк (должно быть 5 строк). если строка 1 раскомментирована, то поле заполняется и раскрывающийся список состоит из одной строки или вообще ничего. если я не выполняю supportFragmentManager.beginTransaction (). detach (scaleFragment) .attach (scaleFragment) .commit (т.е. я не перевожу страницу на другой язык), тогда все работает правильно - поле заполнено, а выпадающая - нижний список содержит все необходимые опции

     <com.google.android.material.textfield.TextInputLayout
            android:id = "@+id/editSpeedLayout"
  

style = "@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
            android:layout_width = "0dp"
            android:layout_height = "wrap_content"
            android:layout_margin = "8dp"
            android:layout_marginTop = "4dp"
            android:hint = "@string/speed_head"
            app:layout_constraintEnd_toStartOf = "@id/editVoltageLayout"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintTop_toBottomOf = "@id/textHeaderScale"
            app:suffixText = "@string/mm_per_sec">
    
            <AutoCompleteTextView
                android:id = "@+id/editSpeed"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:inputType = "none" />
        </com.google.android.material.textfield.TextInputLayout>

Что я делаю неправильно. Извините за мой английский

0
0
41
1

Ответы 1

Я не беру в расчет то, что AutoCompleteTextView фильтрует список по введенному значению. необходимо отключить фильтр в переходнике. Если фильтр не отключен, то при перерисовке фрагмента в адаптере будут отображаться только те результаты, которые удовлетворяют условиям фильтрации. AutoCompleteTextView - отключить фильтрацию

Другие вопросы по теме