Question

I have problem in creating pop-up menu on menu key event. I don’t understand how to pass required parameter to popmenu constructor. If any know what is the problem in my code then please suggest.

public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) 
    {
        View v=getCurrentFocus();
        PopupMenu popupMenu = new PopupMenu(this,v);
        popupMenu.inflate(R.menu.poupup_menu);
        popupMenu.setOnMenuItemClickListener(
            new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.menu_red:
                            Toast.makeText(context,"red",2000).show();
                            break;
                        case R.id.menu_blue:
                            Toast.makeText(context,"red",2000).show();
                            break;
                        case R.id.menu_green:
                            Toast.makeText(context,"red",2000).show();
                            break;
                    }
                    return true;
                }
            });
            popupMenu.show();

            // ...
            return true;
        } else {
            return super.onKeyUp(keyCode, event);
        }
    }
}
Was it helpful?

Solution

thanks guys for answering...I got perferct solution to handle android menus..Override onCreateoption menu method,in that get menu instance and inflate our customize menu..and handle menu click event.

     /* Initiating Menu XML file (menu.xml) */
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.layout.menu, menu);
    return true;
}
/**
 * Event Handling for Individual menu item selected
 * Identify single menu item by it's id
 * */
@Override
public boolean onOptionsItemSelected(MenuItem item)
{

    switch (item.getItemId())
    {
    case R.id.menu_bookmark:
        // Single menu item is selected do something
        // Ex: launching new activity/screen or show alert message
        Toast.makeText(AndroidMenusActivity.this, "Bookmark is Selected", Toast.LENGTH_SHORT).show();
        return true;
    case R.id.menu_save:
        Toast.makeText(AndroidMenusActivity.this, "Save is Selected", Toast.LENGTH_SHORT).show();
        return true;
    case R.id.menu_search:
        Toast.makeText(AndroidMenusActivity.this, "Search is Selected", Toast.LENGTH_SHORT).show();
        return true;
    case R.id.menu_share:
        Toast.makeText(AndroidMenusActivity.this, "Share is Selected", Toast.LENGTH_SHORT).show();
        return true;
    case R.id.menu_delete:
        Toast.makeText(AndroidMenusActivity.this, "Delete is Selected", Toast.LENGTH_SHORT).show();
        return true;
    case R.id.menu_preferences:
        Toast.makeText(AndroidMenusActivity.this, "Preferences is Selected", Toast.LENGTH_SHORT).show();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top