2014-01-13 25 views
0

如何將我的應用程序設置爲在長時間點擊監聽器上顯示上下文菜單? 我希望當我點擊播放聲音,並長按一下顯示菜單上的一些選項和按鈕,在1個相同的按鈕。 所以我想o正常點擊播放聲音,長按一下顯示菜單與一些按鈕,我可以使用設置爲鈴聲和其他東西。在SetOnLongClickListener上設置ContextMenu

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

回答

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); 
    } 
} 
相關問題