Добавление ошибки PlaceAutocompleteFragment для фрагментации

Я реализовал PlaceAutocompleteFragment в действии и успешно работает. Но как реализовать то же самое в фрагменте в android? Я реализовал placeautocomplete фрагмент, подобный этому

 PlaceAutocompleteFragment autocompleteFragment1 = (PlaceAutocompleteFragment)
            getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment1);

Ошибка, которую я получаю,

Неиспользуемые типы, не могут использовать 'android.support.v4.app.Fragment' для com.google.android.gms.location.PlaceAutocompleteFragment.

XML LAYOUT IS

  <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/button_background"
            card_view:cardCornerRadius="4dp"
            card_view:contentPadding="0dp">
        <fragment
            android:id="@+id/place_autocomplete_fragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter Place"
            android:background="#fff"
            android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
            />
            </android.support.v7.widget.CardView>

Заранее спасибо

Ответ 1

Используйте getActivity() таким образом.

PlaceAutocompleteFragment autocompleteFragment1  = (PlaceAutocompleteFragment)getActivity().getFragmentManager().findFragmentById(R.id.autocomplete_fragment1);

Ответ 2

  • Измените SupportPlaceAutocompleteFragment вместо PlaceAutocompleteFragment в вашем макете xml
   fragment 
    android:id="@+id/place_autocomplete_fragment"
    android:name="com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment"                          
    android:layout_width="match_parent"                        
    android:layout_height="wrap_content" 
    />
  1. Измените getChildFragmentManager() вместо getFragmentManager() и используйте SupportPlaceAutocompleteFragment вместо PlaceAutocompleteFragment в ваш java файл,

     SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment) getChildFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
    

Ответ 3

В вашем файле макета XML вы должны использовать следующее:

<fragment
  android:id="@+id/place_autocomplete_fragment1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
 />

Обратите внимание на полное имя класса и id, ваш идентификатор не совпадает. (Place_autocomplete_fragment1)

Ответ 4

Идентификатор фрагмента должен быть android:id="@+id/place_autocomplete_fragment1"

<fragment
android:id="@+id/place_autocomplete_fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"/>

Ответ 5

Другая важная причина этой ошибки заключается в том, что вы должны расширять класс Fragment от android.support.v4.app.Fragment и отбрасывать его на PlaceAutoCompleteFragment, который расширяет класс Fragment от com.google.android.gms.location.PlaceAutocompleteFragment. Чтобы этого избежать, вы должны/можете использовать SupportPlaceAutoCompleteFragment вместо того, чтобы использовать.

SupportPlaceAutocompleteFragment autocompleteFragment1 = (SupportPlaceAutocompleteFragment)
            getActivity.getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment1);

Использование этого виджета автозаполнения также будет работать на устройствах с более низкой версией.

Ответ 6

Здесь решение в Котлине. Это специально для того, если вы хотите запустить фрагмент автозаполнения, находясь во фрагменте.

val autocompleteFragment = childFragmentManager.findFragmentById(R.id.autocomplete_support_fragment) as AutocompleteSupportFragment?
<fragment
    android:id="@+id/autocomplete_support_fragment"
    android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>