Quiero crear una intención que comience una nueva actividad una vez que se haga clic en un elemento del menú, pero no estoy seguro de cómo hacerlo. He estado leyendo la documentación de Android, pero mi implementación no es correcta ... y ayudaría un poco de orientación en la dirección correcta. He enumerado mi código a continuación y he comentado mis áreas problemáticas, creo que estoy invocando el método incorrecto.
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
fuente
fuente
Agregar código siguiente
fuente
El archivo de elementos del menú se ve así
res / menu / menu_main.xml
El código Java se parece a
src / MainActivity.java
Y agregue el siguiente código a su archivo AndroidManifest.xml
Espero que te ayude.
fuente
Este código es trabajo para mi
fuente
Además de las opciones que se muestran en su pregunta, existe la posibilidad de implementar la acción directamente en su archivo xml desde el menú, por ejemplo:
Y para su archivo Java (Actividad), debe implementar un método público con un solo parámetro de tipo MenuItem, por ejemplo:
NOTA: Este método tendrá un comportamiento similar al onOptionsItemSelected (elemento MenuItem)
fuente
Reemplace su
onOptionsItemSelected
como:Aquí, quiero navegar de
DashboardActivity
aSettingActivity
.fuente