React-Native Android物理返回键
2017-03-08 10:01
525 查看
项目中真实运用到的
/**
* Created by tulin1 on 2017/2/7.
*/
import React, {Component} from 'react';
import {
View,
BackAndroid,
ToastAndroid
} from 'react-native';
import Main from '../Main/Main';
import NavbarComp from '../Navigator/navigator'
export default class IndexView extends Component {
//注册Android环境物理返回监听事件
componentWillMount(){
BackAndroid.addEventListener('hardwareBackPress', this.onBackAndroid);
}
//解绑Android环境物理返回监听事件
componentWillUnmount() {
BackAndroid.removeEventListener('hardwareBackPress', this.onBackAndroid);
}
//Android物理返回键处理
onBackAndroid = () => {
const routers = this.props.navigator.getCurrentRoutes();
// 当前页面不为root页面时的处理
if (routers.length > 1) {
const top = routers[routers.length - 1];
if (top.ignoreBack || top.component.ignoreBack) {
// 路由或组件上决定这个界面忽略back键
return true;
}
const handleBack = top.handleBack || top.component.handleBack;
if (handleBack) {
// 路由或组件上决定这个界面自行处理back键
return handleBack();
}
// 默认行为: 退出当前界面。
navigator.pop();
return true;
}
if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
//最近2秒内按过back键,可以退出应用。
return false;
}
this.lastBackPressed = Date.now();
ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);
return true;
};
render() {
return (
<View style={{flexGrow: 1}}>
<Main navigator={this.props.navigator}/>
</View>
);
}
}
/**
* Created by tulin1 on 2017/2/7.
*/
import React, {Component} from 'react';
import {
View,
BackAndroid,
ToastAndroid
} from 'react-native';
import Main from '../Main/Main';
import NavbarComp from '../Navigator/navigator'
export default class IndexView extends Component {
//注册Android环境物理返回监听事件
componentWillMount(){
BackAndroid.addEventListener('hardwareBackPress', this.onBackAndroid);
}
//解绑Android环境物理返回监听事件
componentWillUnmount() {
BackAndroid.removeEventListener('hardwareBackPress', this.onBackAndroid);
}
//Android物理返回键处理
onBackAndroid = () => {
const routers = this.props.navigator.getCurrentRoutes();
// 当前页面不为root页面时的处理
if (routers.length > 1) {
const top = routers[routers.length - 1];
if (top.ignoreBack || top.component.ignoreBack) {
// 路由或组件上决定这个界面忽略back键
return true;
}
const handleBack = top.handleBack || top.component.handleBack;
if (handleBack) {
// 路由或组件上决定这个界面自行处理back键
return handleBack();
}
// 默认行为: 退出当前界面。
navigator.pop();
return true;
}
if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
//最近2秒内按过back键,可以退出应用。
return false;
}
this.lastBackPressed = Date.now();
ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);
return true;
};
render() {
return (
<View style={{flexGrow: 1}}>
<Main navigator={this.props.navigator}/>
</View>
);
}
}
相关文章推荐
- react native 之 Android物理返回键
- React Native中Android物理back键按两次返回键即退出应用
- react native 之 Android物理返回键
- react-native 监听Android物理返回键
- React Native学习之Android的返回键BackAndroid详解
- react native ——android返回键问题
- 混合开发的大趋势之一React Native之页面跳转(2)+物理返回+特定平台代码
- React Native 指定页面物理返回监听
- reactnative BackAndroid 实现按返回键2次退出
- 混合开发的大趋势之一React Native之页面跳转(2)+物理返回+特定平台代码
- Start React Native In Android
- React Native For Android 架构初探
- Android之React native的介绍和入门指南
- React-Native for Android
- React Native for Android 研究总结
- React-native Android Java Module如何暴露自己的方法给js
- 已有Android工程集成ReactNative页面
- React native android 入门之windows安装