私は初めてプレイスオートコンプリートフラグメントを実装しようとしていますが、1つの問題に直面しています。入力を開始すると、最初の文字の後に検索が開始され、結果を表示する代わりに、その(フラグメント)が消えるだけです。取得はステータスです{statusCode = PLACES_API_ACCESS_NOT_CONFIGURED、resolution = null}
Manifest.xml
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4" />
Xml_layout
<TextView
Android:text="TextView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_marginTop="14dp"
Android:id="@+id/Area"
Android:onClick="Onselection"
Android:layout_alignParentEnd="true"
Android:layout_alignParentStart="true" />
<fragment
Android:id="@+id/place_autocomplete_fragment"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:name="com.google.Android.gms.location.places.ui.PlaceAutocompleteFragment"
Android:layout_below="@+id/Area"
Android:layout_alignParentStart="true" />
クラス
public class test extends AppCompatActivity implements PlaceSelectionListener {
private static final String LOG_TAG = "PlaceSelectionListener";
private static final LatLngBounds BOUNDS_MOUNTAIN_VIEW = new LatLngBounds(
new LatLng(-85, -180), new LatLng(85, 180));
private static final int REQUEST_SELECT_PLACE = 1000;
TextView locationtext ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testtttt);
locationtext = (TextView) findViewById(R.id.Arear) ;
PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
autocompleteFragment.setOnPlaceSelectedListener(this);
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_ADDRESS)
.build();
autocompleteFragment.setFilter(typeFilter);
}
public void Onselection(View v)
{
try {
Intent intent = new PlaceAutocomplete.IntentBuilder
(PlaceAutocomplete.MODE_OVERLAY)
.setBoundsBias(BOUNDS_MOUNTAIN_VIEW)
.build(testtttt.this);
startActivityForResult(intent, REQUEST_SELECT_PLACE);
} catch (GooglePlayServicesRepairableException |
GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
@Override
public void onPlaceSelected(Place place) {
}
@Override
public void onError(Status status) {
}
これは、AndroidでGoogle APIを使用して開発しているときの非常に興味深い体験です。あなたがする必要があるすべては次のとおりです:
それでおしまい。
Rand_mem_RAMは正しいです。
2日間グーグルで調べました。非常に単純なので、おそらく回答をバイパスしました。
賛成票を投じたはずですが、ゲストとしてはできません。
私は同じ問題に直面していたので、このメッセージに遭遇しました 自分で確認したい場合のリンクです。 Places SDK for Android 。
とても長い話ですが、私は新しいAPISに移行しました。 新しいPlaces SDKクライアントへの移行
私の場合私の地図はフラグメントにあり、検索は地図の上にありました
build.gradle
implementation "com.google.Android.gms:play-services-location:16.0.0"
implementation "com.google.Android.gms:play-services-maps:16.1.0"
implementation 'com.google.Android.libraries.places:places:1.0.0'
APIが新鮮で新しい1.0.0であることに注意してください。これらのAPIは私に与えました:
com.google.Android.gms.maps.SupportMapFragmentMAP用
com.google.Android.libraries.places.widget.AutocompleteSupportFragment検索バー
<fragment
Android:id="@+id/map"
Android:name="com.google.Android.gms.maps.SupportMapFragment"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_marginBottom="16dp"
Android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<fragment
Android:id="@+id/f_auto_complete"
Android:name="com.google.Android.libraries.places.widget.AutocompleteSupportFragment"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginStart="16dp"
Android:layout_marginTop="16dp"
Android:layout_marginEnd="16dp"
Android:minHeight="@dimen/size_search_view"
app:layout_constraintEnd_toEndOf="@+id/map"
app:layout_constraintStart_toStartOf="@id/map"
app:layout_constraintTop_toTopOf="@id/map" />
フラグメント
private fun initAutoCompleteView() {
activity?.let { a ->
if (!Places.isInitialized()) {
Places.initialize(a.applicationContext, "YOUR API KEY")
}
fragment = childFragmentManager.findFragmentById(R.id.f_auto_complete) as AutocompleteSupportFragment
fragment?.let {
it.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG))
it.setOnPlaceSelectedListener(object : PlaceSelectionListener {
override fun onPlaceSelected(place: Place) {
Log.i("Places", place.name)
}
}
override fun onError(status: Status) {
Log.i("Places", "An error occurred: $status")
}
})
}
}
}
生活を楽にするために、クラスが合わない場合に備えて、インポートも追加しています。
import com.google.Android.libraries.places.api.Places
import com.google.Android.libraries.places.api.model.Place
import com.google.Android.libraries.places.widget.AutocompleteSupportFragment
import com.google.Android.libraries.places.widget.listener.PlaceSelectionListener
別の考えられる原因は、プロジェクトの課金をまだ有効にしていないためです。私もそうでした。このページのすべての解決策を試しましたが、文字を入力した後、place-autocomplete-fragmentは自動的に閉じ続けます。
だから私は文字通り基本に戻って Places SDK for Android Getting Started page に行き、そのページでPlaces SDKを使用する前に課金を有効にする必要があると述べましたAndroidの場合、これで問題が解決します。
課金を有効にするには、 課金ページ にアクセスします。
SHA1フィンガープリントが原因で問題が発生することがあります。私の場合、デバッグsha1キーをリリースsha1アプリで正常に機能させた後、