21

我想在单击按钮时打开上下文菜单,但我还必须知道单击按钮时关注哪个列表项。你知道怎么做吗?方法中应该有什么代码onclick

4

4 回答 4

58

我一直在寻找相同的东西,发现您应该使用对话框而不是上下文菜单

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

于 2011-05-26T13:37:22.703 回答
26

如果你真的想出于任何原因这样做......(在我的情况下,出于懒惰)

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 与为上下文菜单注册的视图相同。

于 2012-05-04T22:39:44.720 回答
4

首先,您应该通过调用registerForContextMenu(View view)来注册视图。其次,覆盖onCreateContextMenu()以添加菜单,最后,覆盖onContextItemSelected()以将逻辑放在每个菜单上。

于 2011-04-13T07:13:12.453 回答
1

首先,您应该知道为什么要使用ContextMenu. View的功能ContextMenu类似于 PC 上的右键菜单,意思是对某个项目的“可用操作”。

根据您的描述,我认为您真正需要的是一个带有列表的自定义 Dialog,单击 Button 时会显示该列表,并且还可以获取您的ListView. 然后就可ContextMenu以为一些真正需要菜单的View保存注册了:)

于 2011-04-13T07:15:06.683 回答