从菜单中选择选项后,活动卡死。

3

我在开发Android设备方面还有些新手,所以如果我的问题很简单,我很抱歉,但是我已经花了大约6个小时无法解决这个问题。 我遇到了一个常见菜单的问题。我能够正确地显示菜单并且也能够使所有反应都正常工作。问题在于,在调用它的Activity执行后会冻结。 我已经做了以下操作:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);  
    switch (item.getItemId()) {
        case R.id.new_game: 
            return true;
        default:
            return super.onOptionsItemSelected(item);
}

我尝试删除此处所见的case块中的所有逻辑,但效果与之前相同。当我按下属于“R.id.new_game”的菜单项后,Activity会冻结。 这不是整个应用程序都冻结了,因为我能够再次打开菜单并选择所需选项。但是所有项目(如按钮...)都被禁用。
我也尝试重定向到另一个活动-它可以正常工作,但如果我在移动设备上使用返回按钮,则活动会冻结。

似乎你提供的代码并不是问题所在。当你点击菜单时,是否有其他被调用或停止的东西? - GLee
1个回答

0

尝试并:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // super.onOptionsItemSelected(item);   <- remove this line
    switch (item.getItemId()) {
        case R.id.new_game: 
            return true;
        default:
            return super.onOptionsItemSelected(item);
}

瞎猜一下,如果不能解决问题,那真的很抱歉。您的代码在新创建的应用程序中可以工作,但我从未见过在默认分支中返回之前调用super。


你说得对。我也没有它。但是在搜索中,我发现了一些意见认为把它放在那里不是坏事。 在评论后,它仍然会冻结。 无论如何,谢谢回复。 - Ademar
你是如何解决这个问题的? - Zeeshan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接