gpt4 book ai didi

android - onCreateOptionsMenu 方法的不同行为

转载 作者:搜寻专家 更新时间:2023-11-01 09:14:00 29 4
gpt4 key购买 nike

我在这篇文章中发现了一些令我困惑的地方 http://developer.android.com/guide/topics/ui/menus.html

下面是一段简单的代码和输出当我在 android 3.0 上启动应用程序时

  1. 和2. Activity 创建后立即执行的行系统

第 3 行和第 4 行是在按下菜单并选择菜单项时打印的

问题是第 5 行和 buttonHandler 方法,该方法调用 invalidateOptionsMenu();该调用的结果是第 6 行和第 7 行

为什么系统在onPrepareOptionsMenu之前调用onCreateOptionsMenu,即使他们写了

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

在这种情况下,每次在invalidateOptionsMenu()之后调用onCreateOptionsMenu,但是当我在 android 2.3 上启动应用程序时,onCreateOptionsMenu 只被调用了一次。

1 INFO/System.out(382): onCreateOptionsMenu
2 INFO/System.out(382): onPrepareOptionsMenu
3 INFO/System.out(382): onPrepareOptionsMenu
4 INFO/System.out(382): onOptionsItemSelected
5 INFO/System.out(382): buttonHandler
6 INFO/System.out(382): onCreateOptionsMenu
7 信息/System.out(382): onPrepareOptionsMenu

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public boolean onCreateOptionsMenu(Menu menu) {
System.out.println("onCreateOptionsMenu");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
return true;
}

public boolean onPrepareOptionsMenu(Menu menu) {
System.out.println("onPrepareOptionsMenu");
return super.onPrepareOptionsMenu(menu);
}

public boolean onOptionsItemSelected(MenuItem item) {
System.out.println("onOptionsItemSelected");
return super.onOptionsItemSelected(item);
}

public void buttonHandler(View v){
System.out.println("buttonHandler");
invalidateOptionsMenu();
}

最佳答案

这可能是文档错误。我希望 onCreateOptionsMenu()invalidateOptionsMenu() 之后被调用。

关于android - onCreateOptionsMenu 方法的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6028655/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com