Как заставить KotlinX напрямую получать доступ к свойствам syntheti c родительской активности? - PullRequest
0 голосов
/ 21 февраля 2020

Я использую эту библиотеку в своем приложении. Я написал так, что у меня есть MainActivity с макетом, предоставленным библиотекой, а именно. что-то вроде этого:

<SlidingPanel>
    <MainContentLayout>
    <SlidingPanelContentLayout>
</SlidingPanel>

MainContentLayout - это в основном FrameLayout, куда я загружаю фрагмент. Теперь вот где он становится хитрым - у фрагмента есть код, который обращается к компонентам макета slideupPanel. Когда я набираю компонент в Android Studio, он автоматически импортирует правильный файл класса свойств syntheti c как import kotlinx.android.synthetic.main.layout_sliding_panel.*, и даже автозаполнение работает для отображения правильных полей в качестве свойств. Однако, когда я запускаю приложение, происходит сбой, говоря, что это поле пустое. Чтобы это исправить, я должен добавить (activity as MainActivity). в качестве префикса ко всем полям. И когда я запускаю это, это решает проблему.

Есть ли более чистый способ сделать это, потому что запись (действие как MainActivity). во многих местах кажется раздражающим. Есть ли для этого директива kotlin, и почему библиотека привязок представления KotlinX не обнаруживает автоматически, что расположение скользящей панели находится на другой компоновке, и, следовательно, записывает в корректный класс удобства, чтобы получить к ней правильный доступ без сбоя приложения?

1 Ответ

1 голос
/ 21 февраля 2020

Я понял ваш вопрос примерно так: вы пытаетесь получить доступ к одному из представлений действия из фрагмента, который на нем размещен.

Такой подход не годится, поскольку он объединяет активность и фрагмент (таким образом, делая фрагмент не пригодным для повторного использования в других действиях). Если это действительно необходимо, взаимодействие между действием и фрагментом может быть выполнено с использованием интерфейсных действий. Однако необходимо помнить о жизненном цикле фрагмента (другими словами, ссылка на деятельность не всегда доступна внутри фрагмента). И последнее, но не менее важное: ничего страшного в расширениях kotlin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...