web-dev-qa-db-fra.com

Gestion d'un élément de menu Cliquez sur un événement - Android

Je veux créer une intention qui lance une nouvelle activité une fois qu'un élément de menu est cliqué, mais je ne sais pas comment faire. J'ai lu la documentation Android, mais ma mise en œuvre n'est pas correcte ... et des conseils dans la bonne direction pourraient aider. J'ai listé mon code ci-dessous et commenté mes problèmes, je pense invoquer la mauvaise méthode.

package com.jbsoft.SimpleFlashlight;

import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
import Android.view.*;
import Android.view.MenuItem.OnMenuItemClickListener;
import Android.widget.Button;
import Android.widget.Toast;

public class SimpleFlashLightActivity extends Activity {


  Button GreenButton;   // Declare instances of buttons to use later
  Button BlueButton;

  private static final int OK_MENU_ITEM = Menu.FIRST;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    BlueButton = (Button) findViewById(R.id.bluebutton);
    BlueButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v) {

        //Display msg when user clicks Blue Button
        showColorChangeMsg();

        // Switch Activities on click
        Intent blueintent = new Intent(SimpleFlashLightActivity.this,
                                       BlueFlashLightActivity.class);
        startActivity(blueintent);

      }
    });
    //Install listener for second button
    GreenButton = (Button) findViewById(R.id.greenbutton);
    GreenButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v) {

        // Display msg when user clicks Green Button
        showColorChangeMsg();

        Intent greenintent = new        Intent(SimpleFlashLightActivity.this,
                                               GreenFlashLightActivty.class);
        startActivity(greenintent);

      }
    });

    ;

    /**************************************************************************************/

    // Method Declarations // THIS IS WHERE I'M HAVING A PROBLEM

    MenuItem AddColorButton = (MenuItem)findViewById(R.id.menu_insert);

    boolean onOptionsItemSelected(AddColorButton) {
      Intent intent = new  Intent(SimpleFlashLightActivity.this,
                                  BlueFlashLightActivity.class);
      startActivity(intent);
      return true;
      ;
    };
    /****************************************************************************************/

  }
  private void showColorChangeMsg()
  {
    Toast msgtoast = Toast.makeText(this.getBaseContext(), "SWITCH COLOR!",
                                    Toast.LENGTH_LONG);
    msgtoast.show();
  }
  private void showMsg(String msg) {
    Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG);
    toast.show();
  }

  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.list_menu, menu);
    return true;

  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case OK_MENU_ITEM:
      showMsg("OK");
      break;
    }
    return super.onOptionsItemSelected(item);
  }

}
108
Jade Byfield

code simple pour la création de menu ..

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

code simple pour le menu sélectionné

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

pour plus de détails, allez au-dessous du lien ..

Link1

Link2

264
Niranj Patel

Ajouter le code suivant

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.new_item:
        Intent i = new Intent(this,SecondActivity.class);
            this.startActivity(i);
            return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
9
Half Moon

Le fichier d'éléments de menu ressemble à

res/menu/menu_main.xml

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    tools:context=".MainActivity">
    <item
        Android:id="@+id/settings"
        Android:title="Setting"
        app:showAsAction="never" />
    <item
        Android:id="@+id/my_activity"
        Android:title="My Activity"
        app:showAsAction="always"
        Android:icon="@Android:drawable/btn_radio"/>
</menu>

Le code Java ressemble à

src/MainActivity.Java

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

      if (id == R.id.my_activity) {
            Intent intent1 = new Intent(this,MyActivity.class);
            this.startActivity(intent1);
            return true;
        }

        if (id == R.id.settings) {
            Toast.makeText(this, "Setting", Toast.LENGTH_LONG).show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

Et ajoutez le code suivant à votre fichier AndroidManifest.xml

<activity
            Android:name=".MyActivity"
            Android:label="@string/app_name" >
        </activity>

J'espère que cela vous aidera.

5
Pacific P. Regmi

Ce code est un travail pour moi

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

     if (id == R.id.action_settings) {
  // add your action here that you want
        return true;
    }

    else if (id==R.id.login)
     {
         // add your action here that you want
     }


    return super.onOptionsItemSelected(item);
}
2
Basant

outre les options indiquées dans votre question, il est possible de mettre en œuvre l'action directement dans votre fichier xml à partir du menu, par exemple:

<item
   Android:id="@+id/OK_MENU_ITEM"
   Android:onClick="iraActivitySobre" />

Et pour votre fichier Java (Activity), vous devez implémenter une méthode publique avec un seul paramètre de type MenuItem, par exemple:

 private void showMsgDirectMenuXml(MenuItem item) {
    Toast toast = Toast.makeText(this, "OK", Toast.LENGTH_LONG);
    toast.show();
  }

Remarque: cette méthode aura un comportement similaire à la onOptionsItemSelected (élément MenuItem)

0
Jackson.Roberio