Контекстное меню в пользовательском компоненте - PullRequest
2 голосов
/ 19 апреля 2011

Я создаю свой пользовательский компонент, в котором я хочу иметь контекстное меню.До сих пор я успешно создал и показал контекстное меню, выполнив следующее:

public class CustomComponent extends LinearLayout implements OnClickListener, OnCreateContextMenuListener   {

private final MenuInflater menuInflator;

public CustomComponent(final Context context) {
    this(context, null);
}

public CustomComponent(final Context context, final AttributeSet attrs) {
    super(context, attrs);

    menuInflator = new MenuInflater(context);

    final LayoutInflater inf = LayoutInflater.from(context);
    inf.inflate(R.layout.component, this, true);

    setOnClickListener(this);
    setOnCreateContextMenuListener(this);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    menuInflator.inflate(R.menu.menu_context, menu);
}

@Override
public void onClick(View v) {
    showContextMenu();
}

}

Проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как получитьФункция onContextItemSelected (), вызываемая внутри этого компонента.Я просматривал какой-то источник в Activity и заметил, что у него есть член mWindow, который содержит эти обратные вызовы.Я не совсем уверен, возможно ли это так.Есть предложения?

1 Ответ

1 голос
/ 19 апреля 2011

Ну а после поиска других опций я нашел очень простые решения:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    menuInflator.inflate(R.menu.menu_context, menu);
    menu.getItem(0).setOnMenuItemClickListener(this);
}

@Override
public boolean onMenuItemClick(MenuItem item) {
    // Do something
    return false;
}

ofcouse, вам нужно реализовать OnMenuItemClickListener, чтобы это работало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...