PlaceAutocompleteFragmentをアクティビティに実装し、正常に動作しています。しかし、アンドロイドで同じようにフラグメントで実装する方法は?私はこのようにplaceautocompleteフラグメントを実装しました
PlaceAutocompleteFragment autocompleteFragment1 = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment1);
私が得ているエラーは
検出できないタイプ。「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>
前もって感謝します
このようにgetActivity()
を使用します。
PlaceAutocompleteFragment autocompleteFragment1 = (PlaceAutocompleteFragment)getActivity().getFragmentManager().findFragmentById(R.id.autocomplete_fragment1);
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"
/>
変更getChildFragmentManager()の代わりに getFragmentManager() 代わりにSupportPlaceAutocompleteFragmentを使用します PlaceAutocompleteFragment あなたのJavaファイル、.
SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment) getChildFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
これがKotlinのソリューションです。これは特に、フラグメント内にいるときにオートコンプリートフラグメントを起動する場合に使用します。
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"
/>
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に注意してください。IDが一致しません。 (place_autocomplete_fragment1)
フラグメントIDは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"/>
このエラーのもう1つの有効な理由は、Android.support.v4.app.Fragment
からFragment
クラスを拡張し、com.google.Android.gms.location.PlaceAutocompleteFragment
からPlaceAutoCompleteFragment
クラスを拡張するFragment
にキャストする必要があることです。これを回避するには、使用する代わりにSupportPlaceAutoCompleteFragment
を使用する必要があります。
SupportPlaceAutocompleteFragment autocompleteFragment1 = (SupportPlaceAutocompleteFragment)
getActivity.getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment1);
これを使用すると、オートコンプリートウィジェットは下位バージョンのデバイスでも機能します。