2015-10-01 24 views
5

どのようにしてアンドロイドの反応ネイティブの最後のアクティビティに戻ることができますか?どのようにしてアンドロイドの反応ネイティブの最後のアクティビティに戻ることができますか?

私の考え方は次のとおりです。RouteMappingでindex.android.jsで

1セット_navigate

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

2パス・ナビゲーター:リストビューの

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で戻るボタンをクリックすると、アプリから飛び出しますか?

どうすればいいですか?

誰かが例を挙げることができますか?で作成した

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

プロジェクトは、ネイティブリアクト:

答えて

3

あなたは<にプロジェクト> /アンドロイド/アプリ/ srcに/メイン/ javaの/ COM/<プロジェクト> /MainActivity.javaを次のコードを追加する必要があります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

関連する問題