Как изменить кнопку в таблице с контекстным представлением в Android - PullRequest
0 голосов
/ 03 августа 2011

Мне было интересно, как изменить метку кнопки после того, как я выполнил длинный щелчок по ней в Android, используя контекстное меню.

Я знаю, как создать контекстное меню с длинным щелчком, но я не уверен, как получить доступ к нажатой кнопке, просмотр, в методе onContextItemSelected (элемент MenuItem).

Кроме того, нажатая кнопка находится в 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);
}

Любое понимание того, какдля этого будет очень признателен.

Большое спасибо в продвинутом.

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Вы можете использовать findViewById (id) , чтобы получить объект View с указанным идентификатором, а затем вызвать setText для него.

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;
}
0 голосов
/ 03 августа 2011

До вызова onContextItemSelected(...) Android вызывает onCreateContextMenu(...).Если вы переопределите этот метод, вы можете сохранить (в локальной переменной) View, который был передан в качестве параметра (это View, по которому щелкнули).Затем в onContextItemSelected(...) вы можете изменить текст, используя сохраненный View Объект.

Например:

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);
}
...