在实现一个Contextual Menu时,onCreateContextMenu()是成功执行了的,但长按显示出上下文菜单时,点击其中一个item,onContextItemSelected()中的内容并没有被执行,请问这是为什么?
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView)findViewById(R.id.hint);
tv.setText("this is a textview");
registerForContextMenu(tv);
}
public boolean onContexItemSelected(MenuItem item){
super.onContextItemSelected(item);
Log.d("ContextMenu", item.getTitle()+" is selected!");
Toast.makeText(this, "Hleele;", Toast.LENGTH_LONG).show();
return false;
}
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuItem cmitem1 = menu.add(0, Menu.FIRST, Menu.NONE, "item1");
MenuItem cmitem2 = menu.add(0, Menu.FIRST+1, Menu.NONE, "item2");
MenuItem cmitem3 = menu.add(0, Menu.FIRST+2, Menu.NONE, "item3");
/*cmitem1.setCheckable(true)
.setChecked(true);
cmitem2.setCheckable(true);
cmitem3.setCheckable(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.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
你的onContexItemSelected、onCreateContextMenu需要继承activity的,onContexItemSelected方法中的super要去掉,返回true就ok了。我的代码是:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, Menu.FIRST, Menu.NONE, "item1");
menu.add(0, Menu.FIRST + 1, Menu.NONE, "item2");
menu.add(0, Menu.FIRST + 2, Menu.NONE, "item3");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.d("ContextMenu", item.getTitle() + " is selected!");
Toast.makeText(this, "Hleele;", Toast.LENGTH_LONG).show();
return true;
}