studio programacion herramientas fundamentos con avanzado aplicaciones android event-handling menuitem options-menu onitemclicklistener

programacion - manual de android en pdf



Manejo de un elemento de menĂº Haga clic en Evento-Android (4)

Quiero crear un intento que comience una nueva actividad una vez que se hace clic en un elemento de 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 podría ser útil alguna orientación en la dirección correcta. He enumerado mi código a continuación y 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); } }


Agregar código siguiente

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


El archivo de elementos de menú se ve como

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>

El código de Java parece

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

Y agrega el siguiente código a tu archivo AndroidManifest.xml

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

Espero que te ayude.


Este código es trabajo para mí

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


código simple para crear menú ...

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

código simple para el menú seleccionado

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

para más detalles, vaya debajo del enlace.

Link1

Link2