Я разрабатываю приложение с использованием архитектуры наклона, в которой определенный пользовательский вид не сфокусирован с помощью dpad пульта дистанционного управления.
onFocus() пользовательского представления не вызывается в FireStick версии 3 (Android API 28). Тот же код запускается в более ранних версиях (‹ Android API 28)
Настраиваемое представление — это ListRow для отображения жанров фильмов, в которые GenrePresenter передает данные.
genrePresenter = new GenrePresenter(new GenrePresenter.viewListener() {
@Override
public void onClick(View view, String selected) {
((HomeFYCActivity) getActivity()).showAdapter(viewModel.genreList, selected);
}
//THIS DOES NOT GET TRIGGERED ON API 28
@Override
public void onFocus(View view, Boolean hasFocus) {
// NEED TO SET FOCUS HERE
}
}, "ALL GENRES");
header = new HeaderItem("NOW PLAYING");
genreRow = new ListRow(header, genreRowAdapter);
Но вместо этого HeaderItem получает фокус.
Тот же код работает на ‹ Android API 28
Удаленный трекпад используется для выбора других представлений.
РЕДАКТИРОВАТЬ код слушателя жанра Presenter
public interface viewListener {
void onClick(View view, String selected);
void onFocus(View view, Boolean hasFocus);
}
И как я вызываю слушателя
((ShowCard) viewHolder).tvGenre.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
viewListener.onFocus(v, hasFocus);
}
});