andrestoga
andrestoga

Reputation: 619

Android -- Problems with Checkable menu items

I have read the instructions at the android developers page's in order to get the Checkable menu items:

http://developer.android.com/guide/topics/ui/menus.html

this is my xmlmenu:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="all">
        <item android:id="@+id/regu"
              android:title="@string/Regulatory" />
        <item android:id="@+id/warn"
              android:title="@string/Warning" />
        <item android:id="@+id/temp"
              android:title="@string/Temporary" />
        <item android:id="@+id/bicy"
              android:title="@string/Bicycle" />
    </group>
</menu>

And here is my code:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
      case R.id.regu:
          if (item.isChecked())
          {
              item.setChecked(false);
              currAvailableOptions++;
          }
          else if(0 != currAvailableOptions)
          {
                  item.setChecked(true);
                  currAvailableOptions--;
          }
          return true;
      case R.id.warn:
          if (item.isChecked())
          {
              item.setChecked(false);
              currAvailableOptions++;
          }
          else if(0 != currAvailableOptions)
          {
                  item.setChecked(true);
                  currAvailableOptions--;
          }
        return true;
      case R.id.temp:
          if (item.isChecked())
          {
              item.setChecked(false);
              currAvailableOptions++;
          }
          else if(0 != currAvailableOptions)
          {
                  item.setChecked(true);
                  currAvailableOptions--;
          }
          return true;
      default:
        return super.onOptionsItemSelected(item);
      }
    }

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.app_menu, menu);
        return true;
    }

The problem is when I clicked one item, the menu item disappeared. It wouldn't have to stay visible in order to check other menu items?

Any idea?

Greetings

Upvotes: 7

Views: 7545

Answers (4)

Entreco
Entreco

Reputation: 12900

Checkable items appear only in submenus or context menus.

And with submenu they (Google) means:

Submenu A floating list of menu items that appears when the user touches a menu item that contains a nested menu.

Since your menu items are not submenu items, it will not work

Upvotes: 3

kolpazar
kolpazar

Reputation: 124

You should probably add break; statements after each case:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.item1:
        item.setChecked(!item.isChecked());
        break;
    case R.id.item2:
        item.setChecked(!item.isChecked());
        break;
    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

Upvotes: -1

MByD
MByD

Reputation: 137382

I know this is not a direct answer to your question but please consider the following code instead of your switch, it might help you find the problem.

public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case R.id.regu:
  case R.id.warn:
  case R.id.temp:
      if (item.isChecked())
           currAvailableOptions++;
      else if(currAvailableOptions != 0)
           currAvailableOptions--;
      item.setChecked(!item.isChecked());
      return true;
  default:
      return super.onOptionsItemSelected(item);
  }
}

Upvotes: 2

mtmurdock
mtmurdock

Reputation: 13062

What is currAvailableOptions? I looked at the article you linked to and there wasn't anything about that in there. It would seem that all you need to do is check:

   if (item.isChecked())
      item.setChecked(false);
   else
      item.setChecked(true);

or at least that's what the tutorial says. Perhaps you should give it another read? Hope this helps.

Upvotes: 0

Related Questions