在SetOnLongClickListener上设置ContextMenu

时间:2014-01-13 15:36:41

标签: android button contextmenu onlongclicklistener

如何将我的应用设置为在长按监听器上显示上下文菜单? 当我点击播放声音时,我想要它,并且长按一下同时显示带有一些选项和按钮的菜单。 所以我想要正常点击播放声音,长按一下显示菜单,其中包含一些按钮,我可以将其设置为铃声和其他内容。

mp=MediaPlayer.create(this, R.raw.hekler);

ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {


    if (mp2.isPlaying()){
        mp2.pause();
        mp2.seekTo(0);
    }

    else{
        mp.start();
    }

}

});

btn1.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View arg0) {       
        return true;
    }
});

1 个答案:

答案 0 :(得分:2)

要在长按下显示上下文菜单,您应该为单击的视图调用registerForContextMenu(View)

您还应该覆盖onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)

您不需要setOnLongClickListener。如果由于其他原因需要它,它应该返回false。

在您的代码中:

ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
registerForContextMenu(btn1);

btn1.setOnClickListener(new View.OnClickListener() {

    -------------
    -------------

}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_context_menu, menu);
}

处理上下文菜单:

@Override
public boolean onContextItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.contextItem1:
            //Do what you want
        return true;

        case R.id.contextItem2:
            //Do what you want
        return true;

        default:
            return super.onContextItemSelected(item);
    }
}