web-dev-qa-db-ja.com

Androidオートコンプリートフラグメントを自動的に閉じる

私は初めてプレイスオートコンプリートフラグメントを実装しようとしていますが、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) {

    }

クリックするとフラグメントが表示されます

フラグメントが自動的に消える/閉じる

9
Farrukh khalid

これは、AndroidでGoogle APIを使用して開発しているときの非常に興味深い体験です。あなたがする必要があるすべては次のとおりです:

  1. console.developers.google.com に移動します
  2. Google APIキーに関連付けられているプロジェクトを選択します
  3. Android向けGoogle Places APIを有効にする

それでおしまい。

24
rand_mem_RAM

Rand_mem_RAMは正しいです。
2日間グーグルで調べました。非常に単純なので、おそらく回答をバイパスしました。

  1. Console.developers.google.comにアクセスします
  2. Google APIキーに関連付けられているプロジェクトを選択します
  3. Android= 3aのGoogle Places APIを有効にします。Webページの上部にある最初の青いボタンをクリックすると、次のWebページ3bが開きます。次に、次のWebページの上部にある2番目の青いボタンをクリックしますデバイスをテストします。

賛成票を投じたはずですが、ゲストとしてはできません。

5
boxmoja

私は同じ問題に直面していたので、このメッセージに遭遇しました enter image description here 自分で確認したい場合のリンクです。 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
3

別の考えられる原因は、プロジェクトの課金をまだ有効にしていないためです。私もそうでした。このページのすべての解決策を試しましたが、文字を入力した後、place-autocomplete-fragmentは自動的に閉じ続けます。

だから私は文字通り基本に戻って Places SDK for Android Getting Started page に行き、そのページでPlaces SDKを使用する前に課金を有効にする必要があると述べましたAndroidの場合、これで問題が解決します。

課金を有効にするには、 課金ページ にアクセスします。

0
imin

SHA1フィンガープリントが原因で問題が発生することがあります。私の場合、デバッグsha1キーをリリースsha1アプリで正常に機能させた後、

0
Ashwin Nirmale