如何在Android中使用contextview修改tablelayout中的按钮

如何在Android中使用contextview修改tablelayout中的按钮,android,button,text,contextmenu,Android,Button,Text,Contextmenu,我想知道,在安卓系统中,当我使用contextmenu长时间点击按钮时,如何更改按钮的标签 我知道如何通过长时间单击生成contextmenu,但我不确定如何在onContextItemSelected(MenuItem项)方法中访问单击的按钮view 此外,单击的按钮位于tableLayout中,因此我不确定是否可以使用AdapterContextMenuInfo实例变量访问视图 @Override public boolean onContextItemSelected(MenuItem i

我想知道,在安卓系统中,当我使用contextmenu长时间点击按钮时,如何更改按钮的标签

我知道如何通过长时间单击生成contextmenu,但我不确定如何在onContextItemSelected(MenuItem项)方法中访问单击的按钮view

此外,单击的按钮位于tableLayout中,因此我不确定是否可以使用AdapterContextMenuInfo实例变量访问视图

@Override
public boolean onContextItemSelected(MenuItem item){
    switch(item.getItemId()) {
    case R.id.menu_edit:
        //change button's text
        return true;
    case R.id.menu_delete:
        return true;
    case R.id.menu_cancel:
        return true;
    }
    return super.onContextItemSelected(item);
}
任何关于如何做到这一点的见解都将不胜感激


非常感谢advanced。

在调用
onContextItemSelected(…)
之前,android会调用
onCreateContextMenu(…)
。如果重写此方法,则可以保存(到局部变量)作为参数传入的
视图
(这是单击的
视图
)。然后,在
onContextItemSelected(…)
中,可以使用保存的
视图
对象修改文本

例如:

View lastClickedView;

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                               ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    lastClickedView = v;
}

@Override
public boolean onContextItemSelected(MenuItem item){
    switch(item.getItemId()) {
      case R.id.menu_edit:
        lastClickedView.setText("new button text");
        return true;
      case R.id.menu_delete:
        return true;
      case R.id.menu_cancel:
        return true;
    }
    return super.onContextItemSelected(item);
}
您可以使用获取给定id的视图对象,然后调用它

switch(item.getItemId()) {
  case R.id.menu_edit:
    //change button's text
    Button myButton = (Button) findViewById(R.id.menu_edit);
    myButton.setText("new text");    
    return true;
  case R.id.menu_delete:
    return true;
  case R.id.menu_cancel:
    return true;
}