Android 安卓在点击按钮后打开上下文菜单

Android 安卓在点击按钮后打开上下文菜单,android,listview,android-contextmenu,Android,Listview,Android Contextmenu,我想在单击按钮时打开上下文菜单,但我还必须知道单击按钮时哪个列表项处于焦点位置。你知道怎么做吗?单击onclick方法中应该有什么代码?首先,您应该通过调用registerForContextMenu(视图视图)注册视图。其次,覆盖onCreateContextMenu()以添加菜单,最后覆盖onContextItemSelected()以在每个菜单上放置逻辑。首先,您应该知道为什么要使用上下文菜单。视图的ContextMenu功能类似于PC上的右键单击菜单,这意味着对某些项目的“可用操作” 根

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

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

首先,您应该知道为什么要使用
上下文菜单。视图的
ContextMenu
功能类似于PC上的右键单击菜单,这意味着对某些项目的“可用操作”


根据您的描述,我认为您实际需要的是一个带有列表的自定义对话框,该对话框在单击按钮时显示,并且能够获取
列表视图的焦点项目。然后,您可以保存
ContextMenu
的注册,以获得一些真正需要该菜单的视图:)

我正在寻找相同的,并发现应该使用对话框而不是上下文菜单

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();

如果你真的出于任何原因想这么做。。。(就我而言,是因为懒惰)

在活动的
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" />
在onHelp函数中

public void onHelp(View v) {
    openContextMenu(v);
}

这是因为视图v与为上下文菜单注册的视图相同。

实际上,在我的文件管理器应用程序中,没有用户可以处理长时间单击的场景。这就是为什么我尝试在选项菜单中做一个按钮来处理上下文菜单。在我的代码中,我重写了onCreateContextMenu()和onContextItemSelected()方法。在我的onoptionsItemsSelect方法中,我试图调用上下文菜单。我尝试了案例上下文菜单:this.registerForContextMenu(getListView().getFocusedChild());这个.openContextMenu(getListView().getFocusedChild());返回true;这对我不起作用。有什么想法吗?案例上下文菜单:这个.registerForContextMenu(getListView().getFocusedChild());这个.openContextMenu(getListView().getFocusedChild());返回true;这对我不起作用。有什么想法吗?我一直在尝试上下文菜单,认为它们是唯一的解决方案。。。非常感谢。这与上下文菜单模式更容易、更清晰,并且在视觉上更相似
public void onHelp(View v) {
    openContextMenu(v);
}