Навигация с помощью клавиатуры или D Pad в стековом навигаторе Фокусировка на предыдущем экране - PullRequest
2 голосов
/ 20 февраля 2020

Итак, у меня есть стековый навигатор со страницей главного экрана, на котором есть сопоставленный массив «Пункты меню». Они выровнены по горизонтали. Моя проблема в том, что когда я перехожу на любую страницу (используя клавиатуру или dpad на android) и использую свою клавиатуру для навигации по элементам этого экрана, если я нажимаю клавишу «вниз», она фокусируется на элементах меню главного экрана. Но эти элементы находятся на главном экране, и это другой экран. Я знаю, что он сфокусирован, потому что я теряю фокус на текущие элементы, на которых фокусируются экраны, и если я нажимаю клавишу возврата, он открывает экран, на котором он сфокусирован, в главном меню.

Приложение. js:

<Stack.Navigator initialRouteName='Home' headerMode='none'>
                        <Stack.Screen name="Home" component={HomeScreen} />
                        <Stack.Screen name="TV" component={TVScreen} />
                        <Stack.Screen name="Movie" component={MovieScreen} />
                        <Stack.Screen name="Messages" component={MessageScreen} />
                        <Stack.Screen name="HotelInfo" component={HotelInformationScreen} />
                        <Stack.Screen name="Daily" component={DailyUpdateScreen} />
                        <Stack.Screen name="IVD" component={IVDScreen} />
                        <Stack.Screen name="Shopping" component={ShoppingScreen} />
                        <Stack.Screen name="Weather" component={WeatherScreen} />
                        <Stack.Screen name="Language" component={LanguageSelectionScreen} />
                        <Stack.Screen name="Survey" component={SurveyScreen} />
                        <Stack.Screen name="TVPlayer" component={TVPlayer} />
                        <Stack.Screen name="MoviePlayer" component={MoviePlayer} />
                        <Stack.Screen name="MovieDetail" component={MovieDetailScreen} />

                        <Stack.Screen name="Registration" component={Registration} />
</Stack.Navigator>

HomeScreen. js:

navigations = debounce((screen_name, background_image) => {
        this.props.navigation.push(screen_name, {background: background_image});
    }, 200)

    navigate(screen_name, background_image){
        this.navigations(screen_name, background_image);
    }

<View style={styles.thumbnailContainer}>
                    {
                        this.state.mainMenu.map((e, index) => {
                            return (
                                <CustomIcon
                                    key={index}
                                    source={{uri: baseURL.baseImageURL + '/main-menu/icon/' + e.icon}}
                                    imageStyle={styles.thumbnail}
                                    onPress={()=>this.navigate(e.screen_name, e.background_image)}
                                    textStyle={styles.iconLabel}
                                    // text={e.menu}
                                    selected={index === 0}
                                />
                            )
                        })
                    }
</View>

Образец JSON:

{
  "menu": [
    {
      "id": 1,
      "main_menu_id": 1,
      "lang_id": 1,
      "menu": "Messages",
      "screen_name": "Messages",
      "icon": "7954be68-4abe-419b-9484-a8ce64e6d126.png",
      "background_image": "82fc75a4-17c5-4681-b63a-ec1aac95bfca.png",
      "menu_index": 3,
      "active": 1,
      "created_at": "2020-02-12 05:08:58",
      "updated_at": "2020-02-20 18:04:03",
      "deleted_at": null
    },
    {
      "id": 6,
      "main_menu_id": 2,
      "lang_id": 1,
      "menu": "Movies",
      "screen_name": "Movie",
      "icon": "c06b1b9d-b0e2-405e-94e2-762eac2d77f2.png",
      "background_image": "1153df7f-30c4-4c0e-94c4-4b069c9c6ece.png",
      "menu_index": 2,
      "active": 1,
      "created_at": "2020-02-12 17:39:05",
      "updated_at": "2020-02-20 18:03:46",
      "deleted_at": null
    },

  ]
}

Таким образом, по сути, переход на домашнюю страницу (при запуске приложения) и оттуда , если я перехожу к экрану телевизора или любому другому экрану, я могу нажимать и воспроизводить значки / элементы главного экрана, хотя этот экран не отображается. Я уже попробовал Это решение , которое не сработало для меня. Я занимаюсь разработкой приложения для android TV, поэтому мне приходится использовать клавиатуру.

1 Ответ

1 голос
/ 25 февраля 2020

Проблема была исправлена ​​слиянием. Если у вас есть проблема, сделайте обновление.

Вот оригинальная проблема git: Git

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...