Je souhaite créer une intention qui démarre une nouvelle activité une fois que l'utilisateur clique sur un élément de menu, mais je ne sais pas comment procéder. J'ai lu la documentation Android, mais mon implémentation n'est pas correcte ... et quelques conseils dans la bonne direction pourraient aider. J'ai listé mon code ci-dessous et commenté mes problèmes, je pense que j'invoque 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);
}
}
android
event-handling
menuitem
options-menu
onitemclicklistener
Jade Byfield
la source
la source
Ajouter le code suivant
la source
Le fichier des éléments de menu ressemble à
res / menu / menu_main.xml
Le code Java ressemble à
src / MainActivity.java
Et ajoutez le code suivant à votre fichier AndroidManifest.xml
J'espère que cela vous aidera.
la source
Ce code fonctionne pour moi
la source
en plus des options présentées dans votre question, il y a la possibilité d'implémenter l'action directement dans votre fichier xml depuis le menu, par exemple:
Et pour votre fichier Java (Activity), vous devez implémenter une méthode publique avec un seul paramètre de type MenuItem, par exemple:
REMARQUE: cette méthode aura un comportement similaire à celui de onOptionsItemSelected (élément MenuItem)
la source
Remplacez votre
onOptionsItemSelected
comme:Ici, je veux naviguer de
DashboardActivity
àSettingActivity
.la source