Я хочу открыть контекстное меню, когда я нажимаю кнопку, но также я должен знать, какой элемент списка сфокусирован, когда я нажимаю кнопку. Вы знаете, как это сделать? Какой код должен быть в методе onclick
?
Открытие контекстного меню Android после нажатия кнопки
Ответ 1
Я искал то же самое и обнаружил, что вместо контекстного меню вы должны использовать Dialogs
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog
Ответ 2
Если вы действительно хотите сделать это по любой причине... (в моем случае, из лени)
Во время onCreate
вашей активности или где-нибудь, прежде чем ваш пользователь сможет коснуться кнопки, сделайте registerForContextMenu
на этой кнопке. Затем в фактической кнопке onClick обработчик вызовите openContextMenu(View)
.
Например, у меня есть кнопка, объявленная в xml, например
<Button
android:id="@+id/btn_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onHelp"
android:text="@string/help_btn_text" />
в моем onCreate
registerForContextMenu(findViewById(R.id.btn_help));
и в onHelp-функции
public void onHelp(View v) {
openContextMenu(v);
}
это работает, потому что View v совпадает с представлением, зарегистрированным для контекстного меню.
Ответ 3
Во-первых, вы должны зарегистрировать представление, вызвав registerForContextMenu (View view). Во-вторых, переопределите onCreateContextMenu(), чтобы добавить меню, и, наконец, переопределите onContextItemSelected(), чтобы поместить логику в каждое меню.
Ответ 4
Прежде всего, вы должны знать, почему вы должны использовать ContextMenu
. Функциональность ContextMenu
в представлении аналогична меню правой кнопки мыши на ПК, что означает "доступные операции" на каком-либо элементе.
В соответствии с вашим описанием, я думаю, что вам действительно нужен настраиваемый диалог со списком, который отображается при нажатии кнопки, а также может получить сфокусированный элемент вашего ListView
, Затем вы можете сохранить регистрацию ContextMenu
для некоторого представления, которое действительно нуждается в меню:)