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 開発者の Web サイトから使用している例のコンテキストでは、これは、整数 "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);
}
}

これを行うと、「@Override」コマンドを削除する必要があることを示す「public boolean onOptionsItemSelected(MenuItem item) {」行のエラーが Eclipse に表示されます。

このように onOptionsItemSelected (または onConfigurationChanged のようなメソッド) を通じて人々が変数を渡しているインターネット上の例を見つけることができませんでした。残念ながら、これに正しく取り組むためにどこから始めればよいのか、私にはよくわかりません。現時点では、「public static」変数を使用しているため、メソッド (この例では 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 に答える