7

チェック可能なメニュー項目を取得するために、Android 開発者ページの指示を読みました。

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

これは私の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>

そして、ここに私のコードがあります:

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

問題は、1 つの項目をクリックすると、メニュー項目が消えてしまうことです。他のメニュー項目をチェックするために表示されたままにする必要はありませんか?

何か案が?

ご挨拶

4

4 に答える 4

3

チェック可能な項目は、サブメニューまたはコンテキストメニューにのみ表示されます。

そしてサブメニューで彼ら(グーグル)は意味します:

サブメニューユーザーがネストされたメニューを含むメニュー項目に触れたときに表示されるメニュー項目のフローティングリスト。

メニュー項目はサブメニュー項目ではないため、機能しません

于 2011-12-13T17:40:30.633 に答える
2

これがあなたの質問に対する直接的な回答ではないことは承知していますが、スイッチの代わりに次のコードを検討してください。問題を見つけるのに役立つかもしれません。

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);
  }
}
于 2011-04-30T20:17:10.050 に答える
0

currAvailableOptions とは何ですか? リンク先の記事を見ましたが、そこには何もありませんでした。あなたがする必要があるのは、チェックすることだけのようです:

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

または少なくともそれがチュートリアルの言うことです。もう一度読んだほうがいいのではないでしょうか?お役に立てれば。

于 2011-04-30T20:01:51.553 に答える
-1

おそらくブレークを追加する必要があります。各ケースの後のステートメント:

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);
}
于 2012-02-07T23:59:02.740 に答える