Google Place自动完成

时间:2018-09-03 18:39:59

标签: android android-layout android-fragments

我正在尝试添加完善的google place自动完成功能,但是每次我单击它来搜索我的位置时,键盘就会显示出来,然后立即消失

代码xml

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <fragment
            android:id="@+id/place_autocomplete_fragment"
            android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true" />

    </RelativeLayout>
</android.support.v7.widget.CardView>

java代码

PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
            getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            // TODO: Get info about the selected place.
            location = place.getName().toString();

            FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
            String user_id = current_user.getUid();
            mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);

            HashMap<String, String> userMap = new HashMap<>();
            userMap.put("User location", location);


            mDatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    if(task.isSuccessful()){

                        Intent addlocation = new Intent(selectlocation.this, home.class);
                        addlocation.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(addlocation);
                        finish();


                    }

                }
            });
        }
        @Override
        public void onError(Status status) {
            // TODO: Handle the error.
        }
    });

而且我还没有测试它,但是请帮助我检查Java代码(如果正确使用了它。)我正尝试将用户位置发送到我的firbase数据库,如果该代码正确,我就不会这样做,因为我还没有测试它

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。确保您启用了适用于Android的Google Places API,而不仅仅是启用了Developer Console中的Places API。 “ Android的Places API”不会显示在API和Auth / API下,因为它尚未流行。您将必须使用API​​搜索框进行搜索。