Я использую функцию обратной связи для специальных возможностей, и я столкнулся с одной проблемой: у меня есть одна нижняя навигация в родительском действии, и на вкладке настроек я открываю другой фрагмент (внутренний фрагмент), используя .add
, но представление внутреннего фрагмента не получает фокус по умолчанию
Я также пробовал с . replace
, но по умолчанию он не фокусируется на создании фрагментов.
код открытого фрагмента
val details = DetailsFragment.newInstance();
getSupportFragmentManager().setupForAccessibility()
getSupportFragmentManager().beginTransaction().add(android.R.id.content, details).commit()
и я использовал эту функцию расширения, чтобы не фокусироваться на предыдущем фрагменте из этого источник
fun FragmentManager.setupForAccessibility() {
addOnBackStackChangedListener {
val lastFragmentWithView = fragments.lastOrNull { it.view != null }
for (fragment in fragments) {
if (fragment == lastFragmentWithView) {
fragment.view?.importantForAccessibility =
View.IMPORTANT_FOR_ACCESSIBILITY_YES
} else {
fragment.view?.importantForAccessibility =
View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
}
}
}
}
в обычном режиме я показываю, что в начале первого фрагмента он сначала фокусируется на вершине Textview
и говорит автоматически, но во внутреннем фрагменте он не фокусируется по умолчанию, поэтому что мне делать, чтобы по умолчанию сфокусироваться на первом представлении по умолчанию
Я уже пробую
android:focusable="true"
android:focusableInTouchMode="true"
и запросить фокус, но он не работает
Пожалуйста, предложите мне, что любая помощь будет высоко оценена