1

Androidのコンテキストメニュー(「メニュー」ボタンを押すとポップアップするメニュー)を作成しようとしています。私は見つけたすべてのチュートリアルを読みましたが、何も役に立ちませんでした。私はAndroid開発に不慣れです。

menu.xmlファイルを作成しましたが、IDに機能を与える方法がわかりません。これは私のコードがどのように見えるかです:

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

@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);
    }
}

私が得られないこと:'newGame();'をどうするか および'showHelp();'。メニューボタンをクリックすると、新しいアクティビティが開始されることを願っています。どうすればいいのですか?

4

3 に答える 3

1

まず、コードがコンテキストメニュー用ではなく、オプションメニュー用であるため、以下のように新しいアクティビティを呼び出すことができます。

  1. オプションメニューを使用せずに、新しいアクティビティを直接呼び出すことができます。

    Intent myIntent = new Intent(this, NewGame.class);
    startActivity(myIntent);
    
  2. メニューボタンを押してユーザーにオプションを提供したい場合は、以下のコードを試してください

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            menu.add(0, 0, 0, "New Game");
            menu.add(0, 1, 1, "Help");
            return super.onCreateOptionsMenu(menu);
        }
    
    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            if(item.getTitle().toString.equalsIgnoreCase("New Game")) {
    
                Intent intent = new Intent(this, NewGame.class);
                startActivity(intent);
                finish();
              }
                else if(item.getTitle().toString.equalsIgnoreCase("Help")) {
                     Toast.makeText(getBaseContext(), "Help", 2000).show();
                     }
            }
    
于 2011-06-29T15:18:30.780 に答える
0
Intent intent = new Intent(this, NewGame.class);
startActivity(intent);

アクティビティがどのように機能するかについて読んだことがありますか?

于 2011-06-29T14:59:03.990 に答える
0

これにより、アクティビティNewGameが開始されます

Intent myIntent = new Intent(this, NewGame.class);
startActivity(myIntent);
于 2011-06-29T14:59:55.740 に答える