android - 在一个 Activity 中创建多个上下文菜单

标签 android

您好,我正在尝试在一项 Activity 中创建多个上下文菜单。 有两个按钮,我想为每个按钮创建不同的上下文菜单。 任何人都可以建议我或向我推荐一些工作示例吗?

这是我当前的代码。

registerForContextMenu(btn_1);
registerForContextMenu(btn_2);


btn_1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        openContextMenu(v);
    }   
});

btn_2.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        openContextMenu(v);
    }   

});


    }

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        getMenuInflater().inflate(R.menu.media_menu, menu);
        menu.setHeaderTitle("Context menu for btn_1");
        menu.setHeaderIcon(R.drawable.icon_media_up); 
}

@Override
public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.photo:
                Toast.makeText(this, "One", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.video:
                Toast.makeText(this, "Two", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.audio:
                Toast.makeText(this, "Three", Toast.LENGTH_SHORT).show();
                return true;
            }
        return super.onContextItemSelected(item);
    }

最佳答案

您必须在 onCreateContextMenu 方法中处理此问题。有一个参数 View 是你点击的 View 。因此,通过使用该参数,您可以扩充不同的菜单。例如

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        if(v.getId() == R.id.first_button)
             inflate one menu
        else if(v.getId() == R.id.second_button)
             inflate another menu        
}

关于android - 在一个 Activity 中创建多个上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195745/

相关文章:

android - 将 Google map 数据集成到游戏中。如何?

c# - 使用 MonoDroid C# 显示状态栏通知

Android Canvas 重做和撤消操作

java - RealmResults 不支持 addAll() 方法

android - 如何显示进度条

未找到 androidx.lifecycle.DefaultLifecycleObserver

android - Genymotion 中的 INSTALL_FAILED_MISSING_SHARED_LIBRARY

Android TTS + 唤醒锁

android - MDPI、HDPI、XHDPI 和 XXHDPI 的不同 APK

java - 如何使用java获取android Activity 名称?