将PlaceAutocompleteFragment添加到片段抛出错误

Ami*_*air 18 android android-fragments google-places-api

我已在活动中实施了PlaceAutocompleteFragment,并且正在成功运作.但是如何在android中的片段中实现相同的?我已经实现了像这样的placeautocomplete片段

 PlaceAutocompleteFragment autocompleteFragment1 = (PlaceAutocompleteFragment)
            getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment1);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Incovertible类型;不能将'android.support.v4.app.Fragment'强制转换为com.google.android.gms.location.PlaceAutocompleteFragment'.

XML布局是

  <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>
Run Code Online (Sandbox Code Playgroud)

提前致谢

小智 45

getActivity()像这样使用.

PlaceAutocompleteFragment autocompleteFragment1  = (PlaceAutocompleteFragment)getActivity().getFragmentManager().findFragmentById(R.id.autocomplete_fragment1);
Run Code Online (Sandbox Code Playgroud)


Vic*_*cky 24

  1. 在布局xml中更改SupportPlaceAutocompleteFragment而不是PlaceAutocompleteFragment
   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() 并在java文件中使用SupportPlaceAutocompleteFragment而不是PlaceAutocompleteFragment.

     SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment) getChildFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
    
    Run Code Online (Sandbox Code Playgroud)

  • 这是处理嵌套片段时应该使用的方法. (3认同)