2015-10-01 15 views
5

Làm cách nào tôi có thể Thiết lập lại hoạt động cuối cùng trong phản ứng gốc cho Android?Làm thế nào tôi có thể thiết lập trở lại hoạt động cuối cùng trong phản ứng bản địa cho android?

suy nghĩ của tôi là:

1 bộ _navigate trong index.android.js

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

2 đường chuyền navigator trong 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 push trong danh sách xem

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

Nhưng nó không hoạt động. Khi tôi bấm vào nút quay lại trong Android, nó nhảy ra khỏi ứng dụng?

Tôi có thể làm như thế nào?

Hoặc Bất kỳ ai cũng có thể đưa ra một số ví dụ?

Trả lời

3

Bạn cần phải thêm đoạn mã sau vào < dự án >/android/app/src/main/java/com/< dự án của bạn > /MainActivity.java của bạn:

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

dự án tạo ra với Phản ứng Native 0.12 sẽ hoạt động chính xác.

Để biết thêm thông tin, hãy xem sự cố này trên Github https://github.com/facebook/react-native/issues/3223.

+0

Một vài điều nhỏ nhặt mà tôi đã tìm thấy: ngay cả khi bạn cập nhật phiên bản npm của phản ứng gốc, bạn sẽ cần phải chạy init hoặc cập nhật MainActivity của bạn bằng tay. Điều này sẽ cần phải được triển khai cho thiết bị, tự động cập nhật của JS sẽ không chọn điều này. – ooolala

+0

Tôi đã thêm mã này và bây giờ dự án của tôi sẽ không chạy, tôi có nên chạy lệnh npm trong terminal sau khi thêm nó không? cảm ơn –

+0

@Stefan Klasen Xin chào, tại sao tôi gặp lỗi "ReactInstanceManager có quyền truy cập riêng tư trên ReactActivity" khi tôi thêm mã này? – TeodorKolev

Các vấn đề liên quan