Chr*_*rry 144 android oncreate android-fragments
我放了几个断点onCreate(一个在开头,一个在方法结束时),我也在一个开头放了一个断点onCreateOptionsMenu.onCreate首先调用该方法,并在onCreateOptionsMenu调用之前调用该方法.
我正试图Fragment在我的应用程序中分离导航代码,所以我onCreateOptionsMenu根据应用程序是否在手机/平板电脑上运行来分配给我的几个对象(我使用屏幕大小来确定这个,我的布局文件是大屏幕有一个View I在布局膨胀后检查).我遇到的问题是,我在onCreate中创建了这些对象,当我引用该对象时,我得到一个空指针异常onCreateOptionsMenu.
Com*_*are 108
首先调用onCreate方法,然后在调用onCreateOptionsMenu之前调用它.
在具有官方Honeycomb风格的操作栏的设备和应用程序中也是如此.如果没有操作栏,onCreateOptionsMenu()则在用户调出菜单之前不应该调用,通常是按MENU按钮.
(我使用屏幕大小来确定这一点,我的大屏幕布局文件有一个View I在布局膨胀后检查)
一旦冰淇淋三明治发货,该测试将很快破裂.据我所知,ICS手机将有动作栏(虽然可能不是系统栏).
Rom*_*ych 54
就我的Android 2.3和FragmentActivityv4-support库而言,生命周期方法调用的顺序如下:
07-18 18:29:21.629 20183-20183/? I/onCreate:
07-18 18:29:21.719 20183-20183/? I/onStart:
07-18 18:29:21.719 20183-20183/? I/onResume:
07-18 18:29:21.739 20183-20183/? I/onCreateOptionsMenu:
Run Code Online (Sandbox Code Playgroud)
Gen*_* Bo 25
我发现如果在onResume()中我打电话
invalidateOptionsMenu();
Run Code Online (Sandbox Code Playgroud)
然后在onCreateOptionsMenu(菜单菜单)之后调用 - 根据活动生命周期 (我认为这是正确的术语),如@ tir38所示
@Override
public void onResume() {
super.onResume();
invalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)
Paw*_*ari 21
在上面的答案中添加,在ICS和Honeycomb onCreateOptionsMenu的情况下,在onCreate和onPostCreate之后调用,而在Gingerbread和早期版本中,它在onCreate之后但在onPostCreate之前调用.这是我发现的唯一区别.
| 归档时间: |
|
| 查看次数: |
71045 次 |
| 最近记录: |