2015-10-01 1 views
5

Как я могу вернуться к последнему действию в режиме реагирования для Android?Как я могу вернуться к последнему действию в режиме реагирования для Android?

Мое мышление:

1 комплект _navigate в index.android.js

// 设置回退的堆栈 
var _navigator; 
BackAndroid.addEventListener('hardwareBackPress', function() { 
    if (_navigator && _navigator.getCurrentRoutes().length > 1) { 
     _navigator.pop(); 
     return true; 
    } 
    return false; 
}); 

2 проход штурман RouteMapping:

RouteMapper: function(route, navigationOperations, onComponentRef) { 
     _navigator = navigationOperations; 
     if (route.name === 'detail') { 
      // 问题详情页 
      return (
       <DetailScreen 
        navigator={navigationOperations} 
        question={route.question} /> 
      ); 
     } else if (route.name == 'front') { 
      // 首页 
      return(
       <FrontScreen 
       navigator={navigationOperations} 
       /> 
      ); 

     } 
    }, 

3 комплект толчок в виде списка

gotoDetail: function(question: Object) { 
    this.props.navigator.push({ 
     id: question.question_id, 
     name: 'detail', 
     question: question 
    }) 

Но это не работает. Когда я нажимаю кнопку «Назад» в Android, он выпрыгивает из приложения?

Как это сделать?

Или Любой может привести пример?

ответ

3

Вам нужно добавить следующий код в < свой проект >/Android/приложение/SRC/главная/Java/COM/< ваш проект > /MainActivity.java:

@Override 
public void onBackPressed() { 
    if (mReactInstanceManager != null) { 
     mReactInstanceManager.onBackPressed(); 
    } else { 
     super.onBackPressed(); 
    } 
} 

Проекты, созданные с React Native 0.12 будет вести себя правильно.

Для получения дополнительной информации см. Эту проблему на Github https://github.com/facebook/react-native/issues/3223.

+0

Несколько небольших ошибок, которые я обнаружил: даже если вы обновите версию npm для реагирования, вам нужно будет запустить init или обновить MainActivity вручную. Это необходимо будет развернуть на устройство, автоматические обновления JS не подберут это. – ooolala

+0

Я добавил этот код, и теперь мой проект не запускается, я должен запустить команду npm в терминале после добавления? спасибо –

+0

@Stefan Klasen Привет, почему я получаю сообщение об ошибке «ReactInstanceManager имеет личный доступ к ReactActivity», когда я добавляю этот код? – TeodorKolev

Смежные вопросы