Kru*_*hah 25 java android android-layout android-activity navigation-drawer
我正在学习在Android中创建导航抽屉.阅读本文时,我无法理解以下代码:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Run Code Online (Sandbox Code Playgroud)
文件说:
将抽屉指示符/示能表的状态与链接的DrawerLayout同步.
这应该从您的Activity的onPostCreate方法调用,以便在DrawerLayout的实例状态恢复后进行同步,以及状态可能以不通知ActionBarDrawerToggle的方式分散的任何其他时间.(例如,如果您停止转发适当的抽屉事件一段时间.)
而且我读到onPostCreate()从sstn的答案在这里:OnPostCreate在片段
onPostCreate()主要用于框架使用(尽管你可以覆盖它).文档说它是在onStart()和onRestoreInstanceState()之后调用的.
这可能导致假设它可能在onResume()之前被调用,因此可能在消息循环调度事件之前(包括AsyncTask的onPostExecute()方法),这意味着你的onPostExecute()只会在onPause()之后触发.
由于onPostCreate()没有正确记录,并且不是真正用于应用程序 - 我可能想说依赖任何观察到的行为并不是一个好主意.
从这两个我无法理解.究竟做syncState()了什么以及为什么它应该在里面onPostcreate()?谁能更好地解释一下?
Sil*_*ght 12
好吧,我认为这个问题很好.我将收集这个问题及其答案.那么,我们在这里做一些总结:
首先,正如ActionBarDrawerToggle.syncState()文件所述,
将抽屉的状态
indicator/affordance与链接同步DrawerLayout.这应该从你
Activity的onPostCreate方法调用,在DrawerLayout实例状态恢复后同步,以及状态可能ActionBarDrawerToggle以未通知的方式分散的任何其他时间.(例如,如果您停止转发适当的抽屉事件一段时间.)
其次,作为Activity.onPostCreate(Bundle),它是当活动启动完成后调用(后onStart()与onRestoreInstanceState(Bundle)已被调用).应用程序通常不会实现此方法; 它适用于系统类在应用程序代码运行后进行最终初始化.
但是,派生类必须调用通过超类的这种方法的实现.如果他们不这样做,将抛出异常.
那么,究竟做syncState()了什么?
好吧,ActionBarDrawerToggle.syncState()将同步已更改的图标的状态,这会对动作产生影响DrawerLayout.如果你试图删除它syncState(),你会发现箭头的图标不再旋转.
而为什么syncState()要内部调用onPostcreate()?
那么,onPostcreate()当活动启动完成后(后调用onStart()和onRestoreInstanceState(Bundle)被调用),而在此刻,Activity需要动画做好准备工作.那么,如果它不是动画的最佳时刻,那么它是什么时候?
| 归档时间: |
|
| 查看次数: |
6923 次 |
| 最近记录: |