Пользовательский макет в меню параметров показывает пустой макет - PullRequest
0 голосов
/ 24 апреля 2018

Почему пользовательский макет не отображается в пункте меню параметров? enter image description here

Некоторые из упомянутых постов используют пространство имен приложения вместо пространства имен Android, и showAsAction должно быть «всегда». Пробовал со всеми комбинациями, но без удачи.

Это всегда показывает пустой макет.

ниже мой код

Это макет меню

<?

xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.dms.hanumanchalisa.activities.MainActivity">

        <item android:id="@+id/menu_group"
        android:icon="@drawable/ic_action_overflow"
        app:showAsAction="always">

            <menu>
                <item
                    android:id="@+id/menu_set_alarm"
                    app:showAsAction="always"
                    app:actionLayout="@layout/layout_alarm"
                    android:actionProviderClass="android.widget.ShareActionProvider" />

                <item
                    android:id="@+id/menu_adjust"
                    android:icon="@android:drawable/ic_menu_add"
                    android:title="@string/adjust_string"
                    app:showAsAction="ifRoom"/>
                <item
                    android:id="@+id/menu_delete"
                    android:icon="@android:drawable/ic_menu_delete"
                    android:title="@string/delete_string"
                    app:showAsAction="ifRoom"/>
                <item
                    android:id="@+id/menu_about"
                    android:icon="@android:drawable/ic_menu_info_details"
                    android:title="@string/about_string"
                    app:showAsAction="ifRoom"/>
            </menu>
            </item>

</menu>

пользовательский макет, используемый в меню

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/startSetDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set Target Time" />

    <CheckBox
        android:id="@+id/btnalarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOff="@string/string_alarm_off"
        android:textOn="@string/string_alarm_on" />

</RelativeLayout>

Java-код, используемый в действии для отображения меню параметров

 @Override
public boolean onPrepareOptionsMenu(Menu menu) {
    optionsMenu = menu;
    MenuItem groupItem = optionsMenu.findItem(R.id.menu_group);
    MenuItem alarmMenuItem = (MenuItem) groupItem.getSubMenu().findItem(R.id.menu_set_alarm);
    btnSelectTime = (Button) alarmMenuItem.getActionView().findViewById(R.id.startSetDialog);
    alarmSetCheckbox = (CheckBox) alarmMenuItem.getActionView().findViewById(R.id.btnalarm);
    btnSelectTime.setOnClickListener(this);
    alarmSetCheckbox.setOnCheckedChangeListener(this);
    if (isPrayerExsists) {
        groupItem.setVisible(true);
    } else {
        groupItem.setVisible(false);
    }
    return true;

setOnclicklistener также не выдает никаких ошибок, что означает, что представления в пользовательском макете не равны NULL.

ТИА

...