0

My code as below:-

public boolean onCreateOptionsMenu(Menu menu) {
    //getSupportMenuInflater().inflate(R.menu.main, menu);
    //return true;

    // add this
    menu.add(Menu.NONE, R.id.testiv, Menu.NONE, "custom")
        .setActionView(R.layout.test)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    FrameLayout parent = (FrameLayout)findViewById(R.id.content_frame);
    VersionChecker version;

    switch (item.getItemId()) {

    case R.id.testiv: 

    //not call  
    return super.onOptionsItemSelected(item);
}

I try to call onclick the custom layout icon but fail to go into onOptionsItemSelected.

DotNet NF
  • 805
  • 1
  • 6
  • 14
micky
  • 235
  • 2
  • 4
  • 16

1 Answers1

0

you set id to your menu but in case don't call that exactly:

    aMenuItem add (int groupId, int itemId, int order, int titleRes);

you set your item id to 0 but in case statement call R.id.testiv, if you want call this you must set id of your menu item to testiv

////EDIT

change groupId to 0 and use following code:

   @Override
   public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch (item.getItemId()) {
        case R.id.testiv:
            Toast.makeText(this, "Clicked", Toast.LENGTH_SHORT).show();
            break;

        default:
            break;
        }
        return super.onMenuItemSelected(featureId, item);
    }

or

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);

    switch (item.getItemId()) {
    case R.id.testiv:
            Toast.makeText(this, "Clicked", Toast.LENGTH_SHORT).show();
            break;
    }
    return false;
}

more info

Community
  • 1
  • 1
Shayan Pourvatan
  • 11,898
  • 4
  • 42
  • 63