DiecTraca
15/06/13, 19:20:05
Hola soy nuevo en Android, y me encuentro con un problema que no logro solucionar, igual es una cosa sencilla. He buscado solucion, y la que he encontrado coincide con esta, pero a mi no me funciona, supongo que me habre dejado algo, a ver si alguien me puede ayudar.
Lo que quiero hacer es poder diferenciar cual a sido el boton que ha activado el contextMenu, para asi realizar la accion del contextMenu sobre el objeto que representa ese boton.
Este es el codigo que he realizado.
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
char btn = '0';
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// contextMenu for Button 1
Button bt1 = (Button)findViewById(R.id.button1);
registerForContextMenu(bt1);
// contextMenu for Button 2
Button bt2 = (Button)findViewById(R.id.button2);
registerForContextMenu(bt2);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// Which button I pushed?
if (v == bt1) {
setBtn ('1');
} else if (v == bt2) {
setBtn ('2');
}
// ContextMenu Title
menu.setHeaderTitle(R.string.selectOption);
// Create ContextMenu
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TextView for see which button I pressed
TextView lblMessage = (TextView) findViewById(R.id.lblMessage);
// Switch for actions of ContextMenu selection
switch (item.getItemId()) {
case R.id.item1:
// sound for test if I select Option 1
test(null);
// Write which button I pushed
lblMessage.setText("Nun Button = " + btn);
break;
case R.id.item2: ;
break;
case R.id.item3: ;
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void pressCat(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.gato);
mp.start();
}
public void pressLion(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.leon);
mp.start();
}
public void test(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.gato);
mp.start();
}
public char getBtn() {
return btn;
}
public void setBtn(char btn) {
this.btn = btn;
}
El error me lo da en esta parte:
// Which button I pushed?
if (v == bt1) {
setBtn ('1');
} else if (v == bt2) {
setBtn ('2');
}
Si se lo quito va bien, pero no se que boton ha abierto el contextMenu.
Un saludo y gracias.
Lo que quiero hacer es poder diferenciar cual a sido el boton que ha activado el contextMenu, para asi realizar la accion del contextMenu sobre el objeto que representa ese boton.
Este es el codigo que he realizado.
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
char btn = '0';
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// contextMenu for Button 1
Button bt1 = (Button)findViewById(R.id.button1);
registerForContextMenu(bt1);
// contextMenu for Button 2
Button bt2 = (Button)findViewById(R.id.button2);
registerForContextMenu(bt2);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// Which button I pushed?
if (v == bt1) {
setBtn ('1');
} else if (v == bt2) {
setBtn ('2');
}
// ContextMenu Title
menu.setHeaderTitle(R.string.selectOption);
// Create ContextMenu
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TextView for see which button I pressed
TextView lblMessage = (TextView) findViewById(R.id.lblMessage);
// Switch for actions of ContextMenu selection
switch (item.getItemId()) {
case R.id.item1:
// sound for test if I select Option 1
test(null);
// Write which button I pushed
lblMessage.setText("Nun Button = " + btn);
break;
case R.id.item2: ;
break;
case R.id.item3: ;
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void pressCat(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.gato);
mp.start();
}
public void pressLion(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.leon);
mp.start();
}
public void test(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.gato);
mp.start();
}
public char getBtn() {
return btn;
}
public void setBtn(char btn) {
this.btn = btn;
}
El error me lo da en esta parte:
// Which button I pushed?
if (v == bt1) {
setBtn ('1');
} else if (v == bt2) {
setBtn ('2');
}
Si se lo quito va bien, pero no se que boton ha abierto el contextMenu.
Un saludo y gracias.