Android在多上下文菜单中获取父id
在我的代码中,我必须让侦听器具有多上下文菜单:Android在多上下文菜单中获取父id,android,android-widget,Android,Android Widget,在我的代码中,我必须让侦听器具有多上下文菜单: Button btn1= (Button) findViewById(R.id.btn1); registerForContextMenu(btn1); Button edit_text1= (Button) findViewById(R.id.edit_text1); registerForContextMenu( edit_text1 ); 现在在onContextItemSelected中,
Button btn1= (Button) findViewById(R.id.btn1);
registerForContextMenu(btn1);
Button edit_text1= (Button) findViewById(R.id.edit_text1);
registerForContextMenu( edit_text1 );
现在在onContextItemSelected
中,我想获得witch widget必须是文本才能更改。例如:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long buttonId = info.id;
switch ( item.getItemId () ){
case 1:
/* IF USER REQUEST CONTEXT MENU ON btn1 */
btn1.setText( "OK" );
/* IF USER REQUEST CONTEXT MENU ON edit_text1 */
edit_text1.setText( "" );
}
return super.onContextItemSelected(item);
}
不幸的是,info.id
更新帖子
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle( R.string.choose_selection );
view_id = v.getId();
menu.add(0, view_id, 0, getResources ().getString ( R.string.clear ) );
menu.add(0, view_id, 0, getResources ().getString ( R.string.cut ) );
menu.add(0, view_id, 0, getResources ().getString ( R.string.copy ) );
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.e("itemID ", item.getItemId ()+"");
Log.e("view_id ", view_id+"");
switch ( item.getItemId () ){
case 1:
break;
}
return super.onContextItemSelected(item);
}
在onContextItemSelected
中,item.getItemId()
和view\u id
是相同的,在获取父上下文菜单之后,如何获取菜单项id?在这种情况下,getMenuInfo()
方法将返回null,因为这些视图没有向菜单附加任何额外信息。这可能会将您从ClassCastException
中解救出来,因为这些视图不是AdapterView的子视图
使buttonId
成为活动的类成员,并从传递到onCreateContextMenu()
方法的视图中检索它
private int buttonId;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
buttonId = v.getId();
...
}
它们是相同的,因为您正在将所有的
itemId
s设置为view\u id
。不要那样做。