【发布时间】:2011-08-01 20:59:06
【问题描述】:
我正在使用上下文菜单动态创建按钮视图。选择上下文菜单项时,我想重试按钮视图触发上下文菜单。
这就是我创建按钮的方式:
// Create a new button
Button buttonView = new Button(this);
// Set button text
buttonView.setText("MyButton");
// Set on click listener
buttonView.setOnClickListener( new ButtonClickHandler() );
// Register for context menu
registerForContextMenu(buttonView);
这就是我创建上下文菜单的方式:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
这就是我处理选定项目的方式:
public boolean onContextItemSelected(MenuItem item) {
// Get extra menu information about the item selected
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
//
switch (item.getItemId()) {
case R.id.delete:
// Retrieve selected button text
String btnText = ((Button) info.targetView).getText().toString();
// etc...
return true;
default:
return super.onContextItemSelected(item);
}
}
问题是“(AdapterContextMenuInfo)item.getMenuInfo()”返回null,即没有关于该项目的额外信息。我期待在 info.targetView 中获得 Button 视图。显然这只适用于 ListView,因为 AdapterView 负责填充这些额外信息。
我想我应该在“onCreateContextMenu”中做一些事情来附加这些信息。非常欢迎提供附加此信息的示例代码。
谢谢
【问题讨论】:
标签: android