Несоответствие типов.Обязательно: фрагмент, найдено: PlaceAutocompleteFragment - PullRequest
0 голосов
/ 21 февраля 2019

Я столкнулся с

Дублирующимся идентификатором, нулевым тегом или родительским идентификатором с другим фрагментом для ошибки placeAutocompleteFragment

, и поэтому я следовал этому решению чтобы попытаться исправить это, добавив placeAutocompleteFragment через транзакцию фрагмента, используя childFragmentManager

класс фрагмента onCreateView

val fm: FragmentManager = childFragmentManager
var placeAutocompleteFragment: PlaceAutocompleteFragment? = fm.findFragmentByTag("placeAutocompleteFragment") as PlaceAutocompleteFragment?

if (placeAutocompleteFragment == null){
    placeAutocompleteFragment = PlaceAutocompleteFragment()
    fm.beginTransaction().add(R.id.address_layout, placeAutocompleteFragment, "placeAutocompleteFragment").commit()
}

.xml

<android.support.constraint.ConstraintLayout
...
...
...
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/address_layout"
        android:background="@drawable/rounded_search_bar"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0"
        android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"
        android:orientation="horizontal">
    </LinearLayout>
...
...
...
</android.support.constraint.ConstraintLayout>

Проблема теперь в строке

fm.beginTransaction().add(R.id.address_layout, placeAutocompleteFragment, "placeAutocompleteFragment").commit()

Я получаю ошибку типа для placeAutocompleteFragment Несоответствие типов.Требуется: Фрагмент, Найдено: PlaceAutocompleteFragment?

Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Проблема

getChildFragmentManager вернет версию библиотеки поддержки FragmentManager.Таким образом, вы должны передать фрагмент объекта, который наследует версию библиотеки поддержки Fragment.

Но PlaceAutocompleteFragment наследует android.app.Fragment.

Решение

Использование SupportPlaceAutocompleteFragment вместо PlaceAutocompleteFragment.

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