2015-10-01 2 views
5

Come posso tornare all'ultima attività in react-native per Android?Come posso tornare all'ultima attività in react-native per Android?

Il mio pensiero è:

1 set _navigate in index.android.js

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

2 passaggio navigatore 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 set spinta nella visualizzazione elenco

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

Ma non funziona. Quando faccio clic sul pulsante Indietro in Android, salta fuori l'app?

Come posso fare?

Oppure qualcuno può dare qualche esempio?

risposta

3

è necessario aggiungere il seguente codice al <progetto>/android/app/src/main/java/com/<progetto> /MainActivity.java:

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

I progetti creati con Reagire Native 0.12 si comporterà correttamente.

Per ulteriori informazioni, consultare questo numero su Github https://github.com/facebook/react-native/issues/3223.

+0

Ho trovato un paio di piccoli trucchi: anche se si aggiorna la versione npm di react-native è necessario eseguire init o aggiornare MainActivity a mano. Questo dovrà essere distribuito sul dispositivo, gli aggiornamenti automatici di JS non verranno rilevati. – ooolala

+0

Ho aggiunto questo codice e ora il mio progetto non verrà eseguito, dovrei eseguire un comando npm nel terminale dopo averlo aggiunto? grazie –

+0

@Stefan Klasen Ciao, perché ottengo l'errore "ReactInstanceManager ha accesso privato su ReactActivity" quando aggiungo questo codice? – TeodorKolev