我使用componentDidMount
和componentDidUnmount
来使android按钮正常工作。
但是,当我从另一个屏幕再次来到同一屏幕时,我在android后退按钮中放置的功能不起作用。第一次加载屏幕时,它最初可以工作,但是当我转到另一个屏幕并再次返回到该屏幕时,我放置在“后退”按钮中的功能不起作用。
当我点击下面的导航栏时。当我转到另一个屏幕时,它工作正常。.但是,当我点击导航栏并导航到另一个屏幕,然后再次回到屏幕时,该功能无济于事!!我陷入了极大的困境。特别要说明的是:我在主屏幕上,转到帖子的说明,然后返回android的主屏幕后退按钮功能。.但是当我点击导航栏时,导航到其他屏幕然后再次点击导航栏,该功能将无法使用。 –
async componentDidMount() {
BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}
async handleBackButtonClick() {
Alert.alert(
'Exit the app?',
'Are you sure you want to exit the app?',
[
{text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
{text: 'OK', onPress: () => BackHandler.exitApp()},
],
{ cancelable: false }
)
}
答案 0 :(得分:1)
您只需使用addListener
进行导航。
赞:
componentDidMount() {
this.props.navigation.addListener(
'didFocus',
payload => {
BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
}
);
}
关注此链接:addlistener-subscribe-to-updates-to-navigation-lifecycle
答案 1 :(得分:1)
首先,请确保当您再次返回屏幕时调用哪种方法。
Yeah, this is a known backend issue. Basically, it can take 2 minutes for the streaming buffer's cache of where tables are located to update, so the writes after a delete and recreate can end up going to the deleted table's files in that 2 minute window.
然后运行您的功能。