0

オーバーフロー メニューを備えた動作中のアプリがあります。メニュー内のすべてのコードが機能しますが、シングルクリック可能なグループ化されたメニュー項目をクリックした後、チェックマークが表示されません。

私は根本的に間違ったことをしていますか?このチェックマークの表示はAndroidでは自動で、システムがやってくれると思っていました。Android は自分がグループに属していること、選択できるのは 1 つだけであること、そしてどれを選択したかを認識しています。だから..... Androidはチェックマークを表示する方法を知っているはずです。

コード

XML

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".Calculator">
    <group
        android:checkableBehavior="single"
        android:visible="true">
        <item
            android:id="@+id/ui_simple"
            android:orderInCategory="100"
            app:showAsAction="ifRoom|withText"
            android:title="Regular"
            android:checkable="true"/>
        <item
            android:id="@+id/ui_doge"
            android:orderInCategory="100"
            app:showAsAction="ifRoom|withText"
            android:title="Doge"
            android:checkable="true"/>
        <item
            android:id="@+id/ui_static"
            android:orderInCategory="100"
            app:showAsAction="ifRoom|withText"
            android:title="Static"
            android:checkable="true"/>
    </group>

    <item android:title="Display Mode"
        android:orderInCategory="101" >
        <menu>
            <group android:checkableBehavior="single" android:visible="true"   >
                <item
                    android:id="@+id/mode_sign"
                    android:orderInCategory="100"
                    app:showAsAction="collapseActionView"
                    android:title="Sign Form"
                    android:checkable="true"/>
                <item
                    android:id="@+id/mode_noun"
                    android:orderInCategory="100"
                    app:showAsAction="collapseActionView"
                    android:title="Noun Form"
                    android:checkable="true"/>
                <item
                    android:id="@+id/mode_verb"
                    android:orderInCategory="100"
                    app:showAsAction="collapseActionView"
                    android:title="Verb Form"
                    android:checkable="true"/>
            </group>

        </menu>
    </item>

</menu>

UI

注: すべてbreakの をreturn trueに切り替えてみましたが、何も起こりません。

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    switch (item.getItemId()) {

        case R.id.ui_simple :
            startActivity(new Intent(this, Calculator.class));
            break;

        case R.id.ui_doge :
            startActivity(new Intent(this, CalculatorDoge.class));
            break;

        case R.id.ui_static :
            startActivity(new Intent(this, CalculatorStatic.class));
            break;

        case R.id.mode_sign : display = BinaryOperation.Display.SIGN; break;
        case R.id.mode_verb : display = BinaryOperation.Display.VERB; break;
        case R.id.mode_noun : display = BinaryOperation.Display.NOUN; break;

    }

    return super.onOptionsItemSelected(item);

}
4

2 に答える 2

1

いいえ

(オプション メニューの) アイコン メニューのメニュー項目は、チェックボックスまたはラジオ ボタンを表示できません。アイコン メニューのアイテムをチェック可能にすることを選択した場合は、状態が変化するたびにアイコンやテキストを入れ替えて、チェック状態を手動で示す必要があります。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case R.id.ui_simple:            
        if (item.isChecked()){ 
              item.setChecked(false);
        }else{
            item.setChecked(true);
        }
      startActivity(new Intent(this, Calculator.class));
        break;
    case R.id.ui_doge:
        //same goes here and everyone
        break;
   ....
    }
}

それが役に立てば幸い

于 2015-05-27T02:11:34.377 に答える