Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在多上下文菜单中获取父id_Android_Android Widget - Fatal编程技术网

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
。不要那样做。