Содержимое AppBar не отображается для одного действия

У меня есть Activity на основе прокручиваемого шаблона Activity. AppBar работает должным образом при прокрутке, но не отображает его содержимое (навигация вверх, меню параметров, заголовок). Содержимое AppBar не отображается для одного действия

Следующие ниже фрагменты представляют собой минимальные отрывки.

ContactEditActivity:

class ContactEditActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_contact_edit)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)

    val binding = DataBindingUtil.setContentView<ActivityContactEditBinding>(
        this,
        R.layout.activity_contact_edit
    )

    binding.contact = contact
    binding.executePendingBindings()
}

override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
    R.id.action_settings -> {
        true
    }
    R.id.action_save -> {
        true
    }
    else -> {
        super.onOptionsItemSelected(item)
    }
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.menu_contact_edit, menu)
    return true
}
}

activity_contact_edit.xml:

<?xml version = "1.0" encoding = "utf-8"?>
<layout 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"
android:fitsSystemWindows = "true"
tools:context = "(...).activities.ContactEditActivity">
<data>
    <variable
        name = "contact"
        type = "(...).models.Contact" />
</data>
<android.support.design.widget.CoordinatorLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">

    <android.support.design.widget.AppBarLayout
        android:id = "@+id/app_bar"
        android:layout_width = "match_parent"
        android:layout_height = "@dimen/app_bar_height"
        android:fitsSystemWindows = "true"
        android:theme = "@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id = "@+id/toolbar_layout"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:fitsSystemWindows = "true"
            app:contentScrim = "?attr/colorPrimary"
            app:layout_scrollFlags = "scroll|exitUntilCollapsed"
            app:toolbarId = "@+id/toolbar">

            <android.support.v7.widget.Toolbar
                android:id = "@+id/toolbar"
                android:layout_width = "match_parent"
                android:layout_height = "?attr/actionBarSize"
                app:layout_collapseMode = "pin"
                app:popupTheme = "@style/AppTheme.PopupOverlay" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <include layout = "@layout/content_contact_edit"
        app:contact = "@ = {contact}"/>

</android.support.design.widget.CoordinatorLayout>
</layout>

menu_contact_edit.xml:

<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 = ".activities.ContactEditActivity">
<item
    android:id = "@+id/action_save"
    android:title = "@string/action_save"
    app:showAsAction = "ifRoom"/>
<item
    android:id = "@+id/action_settings"
    android:orderInCategory = "100"
    android:title = "@string/action_settings"
    app:showAsAction = "never" />
</menu>

AndroidManifest.xml (отрывок):

    <activity
        android:name = ".activities.ContactEditActivity"
        android:label = "@string/title_activity_contact_edit"
        android:parentActivityName = ".activities.ContactActivity"
        android:theme = "@style/AppTheme.NoActionBar"
        android:windowSoftInputMode = "adjustPan">
        <meta-data
            android:name = "android.support.PARENT_ACTIVITY"
            android:value = "(...).activities.ContactActivity" />
    </activity>

Я перепроверил свой код в Руководстве разработчика на AppBars, создал новое приложение с «Прокруткой» и сравнил код. Но я не мог найти никаких зацепок.

Обновление 1

Как было указано в комментариях, проблема, похоже, связана с привязкой. Без объявления переменной в файле макета и соответствующего раздела привязки в ContactEditActivity панель приложения отображается должным образом.

Я добавил раздел привязки к минимальной версии ContactEditActivity.

Просто вопрос - пробовали ли вы запустить приложение без привязки данных в макете активности?

muminers 26.03.2018 22:06

Нет, не знал. Я не мог представить себе, как это могло помешать.

Niels 26.03.2018 22:29

@muminers Похоже, ты что-то понял. Проблема начинается, когда я добавляю привязку. Я обновлю свой вопрос соответственно.

Niels 27.03.2018 13:15

Извините, не видел ваш предыдущий комментарий - да, привязка данных вызывает некоторые проблемы, связанные с макетом координатора на некоторых устройствах. Не знаю почему, я просто отказался от его использования с более сложными представлениями. По ненадежности это уже не кажется разумным решением.

muminers 27.03.2018 13:25

Это не очень приятно ... Но все равно спасибо!

Niels 27.03.2018 13:34
0
5
194
0

Другие вопросы по теме