gpt4 book ai didi

android - 将 menuItem.setIntent 与 onOptionsItemSelected 混合使用不起作用

转载 作者:行者123 更新时间:2023-11-30 04:47:14 28 4
gpt4 key购买 nike

在扩展从其菜单触发一些其他 Activity 的示例 Android Activity 时,我开始在 onOptionsItemSelected 中处理一些菜单项,并且通过调用 处理一些菜单项(刚刚触发 Intent ) onCreateOptionsMenu 中的 code>setIntent

基本上是这样的:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);

menu.add(0, MENU_ID_1, Menu.NONE, R.string.menu_text_1);
menu.add(0, MENU_ID_2, Menu.NONE, R.string.menu_text_2);

menu.add(0, MENU_ID_3, Menu.NONE, R.string.menu_text_3).
setIntent(new Intent(this, MyActivity_3.class));

return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);

switch (item.getItemId())
{
case (MENU_ID_1):
// Process menu command 1 ...
return true;

case (MENU_ID_2):
// Process menu command 2 ...
// E.g. also fire Intent for MyActivity_2
return true;

default:
return false;
}
}

显然,在这种情况下,MENU_ID_3 上设置的 Intent 永远不会被触发,或者相关 Activity 永远不会启动。

Android javadoc 在某些时候会像<<[如果您在菜单项上设置 Intent ] 并且没有其他任何东西处理该项目,那么默认行为将是[使用 Intent ]>>.

“没有其他任何东西处理该项目”实际上是什么意思?从 onOptionsItemSelected 返回 false 就足够了吗?我也尝试不在开始时调用 super.onOptionsItemSelected(item) 并且只在默认 switch 情况下调用它,但我得到了相同的结果。

有人有什么建议吗?Android 是否允许混合使用这两种处理方式?

感谢大家抽空。

最佳答案

好的。解决方案足够愚蠢。 list 中的目标 Activity 名称(如示例中的 MyActivity_3)拼写错误。

我将第 3 个菜单项处理更改为 onOptionsItemSelected 中的经典开关逻辑,并且在 Eclipse 调试器中出现了 ActivityNotFoundException 异常。

通过以“setIntent 方式”处理菜单项,没有抛出异常。尽管如果我查看 LogCat,我可能会发现一个 MenuItemImpl:找不到处理 Intent 的 Activity ;忽略

关于android - 将 menuItem.setIntent 与 onOptionsItemSelected 混合使用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566541/

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