- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在学习在 Android 中创建抽屉导航。阅读时this ,我看不懂下面的代码:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
文档说:
Synchronize the state of the drawer indicator/affordance with the linked DrawerLayout.
This should be called from your Activity's onPostCreate method to synchronize after the DrawerLayout's instance state has been restored, and any other time when the state may have diverged in such a way that the ActionBarDrawerToggle was not notified. (For example, if you stop forwarding appropriate drawer events for a period of time.)
我从 sstn 的回答 here 中进一步了解了 onPostCreate()
: OnPostCreate in Fragment
onPostCreate() is mainly intented for framework use (although you can override it). The docs say that it is called after onStart() and onRestoreInstanceState().
This might lead to the assumption that it might be called before onResume() and thus probably before the message loop is dispatching events (including AsyncTask's onPostExecute() method), meaning your onPostExecute() will only fire after onPause().
As onPostCreate() is not properly documented and not really intended for application use - I might want to say it is not a good idea to rely on any observed behaviour.
从这两个我无法理解任何事情。 syncState()
究竟做了什么,为什么它应该在 onPostcreate()
中?谁能更好地解释一下?
最佳答案
嗯,我认为这个问题很好。我将收集这个问题及其答案。所以,让我们在这里做一些总结:
首先,至于ActionBarDrawerToggle.syncState()
,正如文档所说,
Synchronize the state of the drawer
indicator/affordance
with the linkedDrawerLayout
.This should be called from your
Activity
'sonPostCreate
method to synchronize after theDrawerLayout
's instance state has been restored, and any other time when the state may have diverged in such a way that theActionBarDrawerToggle
was not notified. (For example, if you stop forwarding appropriate drawer events for a period of time.)
第二,对于Activity.onPostCreate(Bundle)
,在activity启动完成时调用(在onStart()
和 onRestoreInstanceState(Bundle)
已被调用)。应用程序一般不会实现此方法;它旨在让系统类在应用程序代码运行后进行最终初始化。
但是,派生类必须调用到父类(super class)的实现这个方法。如果不这样做,就会抛出异常。
那么,syncState()
究竟做了什么?
嗯,ActionBarDrawerToggle.syncState()
将同步更改后的图标状态,这取决于 DrawerLayout
的操作。如果您曾尝试删除 syncState()
,您会发现箭头图标不再旋转。
而为什么要在onPostcreate()
中调用syncState()
?
好吧,onPostcreate()
会在 Activity 启动完成时调用(在 onStart()
和 onRestoreInstanceState(Bundle)
完成之后调用),而目前,Activity
需要动画才能工作。那么,如果现在不是动画的最佳时刻,那是什么时候呢?
关于java - Navigation Drawer - syncState() 做什么以及为什么应该在 onPostCreate() 中调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999299/
我是 React Native 的新手,目前正在研究 React Native Navigation Docs 。我想知道:navigation.push() 和 navigation.navigat
来自 this和 this , 我了解到 navigation.navigate() 之间存在有意义的差异和 navigation.push() .尽管如此,我仍然想知道我是否可以使用 navigat
我正在使用 react-navigation 3.6.1 和 react-native-camera 2.2.2。当我拍照时,进入下一个屏幕的按钮在第一次按下时没有任何作用。必须按多次 这是针对 io
androidx.navigation:navigation-ui 和 android.arch.navigation:navigation-ui-ktx 有什么区别? 当我在我的 gradle 中使
使用 TypeScript 时,react-navigation 中发生的一个常见错误是: Argument of type 'string' is not assignable to paramet
我有一个使用 React Native 的应用程序,我正在使用 react-navigation (5.2.9)。 我构建了一个 Stack.Navigator,我有我的屏幕,但我希望页脚组件在外面,
我有一个组件在 NavigationContainer 组件内但在 Stack Navigator 之外。我能知道组件中的当前路由是什么吗?我不能使用 useRoute Hook ,因为它出错了: C
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我正在学习 react-native 导航 https://reactnavigation.org/docs/intro/ 。我在那里的例子中看到 class HomeScreen extends R
我在我的 native 项目中使用 eslint airbnb。如果我没有验证 Prop ,特别是来自 react-navigation 的 Prop ,eslint 会抛出错误 linting .
在我的应用程序中,我有 6 个不同的页面。 有 1 个页面称为“收藏夹页面”,其中列出了用户选择的收藏夹。它们由一列显示,该列使用来自另一个类的列表。列表代码如下: List favoriteCo
我在 react 导航问题部分看到很多人使用 this.props.navigation.dispatch 以编程方式导航。是否有任何特定原因或用例需要在 this.props.navigation.
我在 vue.js 中开始了一个新元素。我添加了导航栏。有一次,我注意到控制台中有问题: Audit usage of navigator.userAgent, navigator.appVersio
首先,是的,我知道有很多与此问题相关的答案,但我发现了这种在 react-native 0.60 中进行导航的特定方法,问题是,我还没有弄清楚,而且我不想刮掉这个导航方法来测试不同的方法,这是导航文件
react 导航 5 我在 TabNavigator 内部构建了一个 StackNavigator,并且主屏幕和其他屏幕之间的导航正在工作。但问题是,当我从 Tab2 移动到 Tab1 时,我希望 T
我正在尝试在 react-native with expo 中使用 react-navigation-redux-helpers 将 redux 与 react-navigation 集成。但是,尽管
我正在尝试使用最新的 react-navigation 版本运行我的应用程序但无法正常工作。也尝试使用此解决方案 ( Invariant Violation: The navigation prop
我正在尝试使用 React Navigation 和 StackNavigator 在我的应用中导航。 我有一个带有 onPress={() => navigate('DetailsScreen'
我在我的应用程序中使用 react 导航。如果我从 screen A 导航到 Screen B,如果转换完成,我如何获得一些反馈。 最佳答案 从 'react-native 导入 { Interact
我遵循的是身份验证流程 (https://reactnavigation.org/docs/en/auth-flow.html) 上的 React 导航指南,但略有不同。我在 LoginScreen
我是一名优秀的程序员,十分优秀!