2

我对 Android 还很陌生,如果我的问题看起来很基本,我很抱歉。我昨晚整晚都在寻找它,但找不到解决方案(这让我觉得我想要实现的目标可能存在根本缺陷)。

基本上,我试图从 onOptionsItemSelected 内部调用一个方法。在 Android 开发者文档(http://developer.android.com/guide/topics/ui/menus.html)中,他们给出了这个例子:

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

但是,在我的应用程序中,我有需要输入的 onOptionsItemSelected 调用的方法。在我从 Android 开发者网站使用的示例的上下文中,这相当于我想要将整数“myint”传递给 newGame 方法:

@Override
public boolean onOptionsItemSelected(MenuItem item, int myint) {
// Handle item selection
switch (item.getItemId()) {
    case R.id.new_game:
        newGame(myint);
        return true;
    case R.id.help:
        showHelp();
        return true;
    default:
        return super.onOptionsItemSelected(item);
}
}

当我这样做时,Eclipse 出现“public boolean onOptionsItemSelected(MenuItem item) {”行的错误,说我需要删除“@Override”命令。

我无法在互联网上找到任何人们以这种方式通过 onOptionsItemSelected(或 onConfigurationChanged 之类的方法)传递变量的示例,这就是为什么我认为我可能对它的工作原理存在根本性的误解。不幸的是,我不确定从哪里开始正确解决这个问题。目前我正在使用“公共静态”变量,所以我的方法(在这个例子中是 newGame)可以访问它们,但我意识到使用这些类型的变量似乎通常不受欢迎。

如果有人可以帮助我,甚至指出我需要搜索/阅读的方向,我将不胜感激。

谢谢

斯蒂芬

4

1 回答 1

2

你可以在你的类中有一个私有的非静态变量,当你选择菜单项时,你可以阅读:

case R.id.new_game:
    newGame(this.myint);
    return true;

并在您的班级中名列前茅:

class MyActivity extends Activity {
    private int myint;

您只需确保在用户单击菜单项之前为其分配了一个值!

于 2012-09-21T13:10:11.467 回答