web-dev-qa-db-fra.com

Ajouter PlaceAutocompleteFragment à un fragment provoque une erreur

J'ai implémenté PlaceAutocompleteFragment dans l'activité et fonctionne avec succès. Mais comment implémenter le même fragment dans android? J'ai implémenté un fragment placeautocomplete comme celui-ci

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

Erreur que je reçois est

Types incovertibles; impossible de convertir «Android.support.v4.app.Fragment» vers com.google.Android.gms.location.PlaceAutocompleteFragment.

DISPOSITION XML 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>

Merci d'avance

16
Amit Nair

Utilisez getActivity() comme ceci.

PlaceAutocompleteFragment autocompleteFragment1  = (PlaceAutocompleteFragment)getActivity().getFragmentManager().findFragmentById(R.id.autocomplete_fragment1);
43
user5248371
  1. Modifier SupportPlaceAutocompleteFragment au lieu de PlaceAutocompleteFragment dans votre layout 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. Changer getChildFragmentManager () au lieu de getFragmentManager () et utilisez SupportPlaceAutocompleteFragment au lieu de PlaceAutocompleteFragment dans votre fichier Java ,.

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

Vous devez utiliser les éléments suivants dans votre fichier de présentation 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"
 />

Notez le nom de classe complet et l'id, votre identifiant ne correspond pas. (place_autocomplete_fragment1)

0
sonique

L'identifiant du fragment devrait être 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"/>
0
Naveen Shriyan

Une autre raison valable de cette erreur est que vous devez étendre votre classe Fragment à partir de Android.support.v4.app.Fragment et la convertir en PlaceAutoCompleteFragment qui étend Fragment classe à partir de com.google.Android.gms.location.PlaceAutocompleteFragment. pouvez utiliser SupportPlaceAutoCompleteFragment au lieu de vous utilisez. 

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

L'utilisation de ce widget de saisie semi-automatique fonctionnera également sur les périphériques de la version inférieure.

0
Poras Bhardwaj