Frage

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);
        }
    }
}
War es hilfreich?

Lösung

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top