Как очистить текст выбранного названия места от AutocompleteSupportFragment? - PullRequest
1 голос
/ 21 мая 2019

Я создаю свой проект для приложения бронирования поездки. Я использую AutocompleteSupportFragment для поиска места. Выбрав «Место», я отфильтрую это местоположение, если вы находитесь в Дели, а затем задайте текст «AutocompleteSupportFragment» другим мудрым набором, например «Пожалуйста, выберите правильное место».

Я пытаюсь

autocompleteFragment_to.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(@NonNull Place place) {

            if (!getStateName(place.getLatLng().latitude, place.getLatLng().longitude).equals("Madhya Pradesh")) {
                Common.myLatLong = null;
                Common.placeName1 = null;
                Common.placeName1City = null;
                Log.e("FRagmentData",""+autocompleteFragment_to.a.getText().toString());
                autocompleteFragment_to.a.getText().toString();
                autocompleteFragment_to.a.setText("");
                autocompleteFragment_to.a.setHint("Please select Valid Place");
                autocompleteFragment_to.getView().findViewById(R.id.places_autocomplete_clear_button).performClick();
                autocompleteFragment_to.a.setText("");
                Toast.makeText(context, "Please select Valid Place", Toast.LENGTH_SHORT).show();
            } else {
                destination = place.getLatLng();
                Common.myLatLong = place.getLatLng();
                Common.placeName1 = place.getName();
                Log.e("FRagmentData",""+autocompleteFragment_to.a.getText().toString());
                Common.placeName1City = getAddress(context, place.getLatLng().latitude, place.getLatLng().longitude);
                if (mMap != null) {
                    mMap.clear();
                }
                mapFragment.getMapAsync(MainActivity.this);

            }


        }

        @Override
        public void onError(@NonNull Status status) {
            Toast.makeText(context, "try again later", Toast.LENGTH_SHORT).show();
        }
    });

Я пытаюсь все эти подходы, но он не работает

1 Ответ

0 голосов
/ 22 мая 2019

Используйте AutoComplete IntentBuilder вместо фрагмента ..

Просто инициализируйте Места внутри oncreate ()

// Initialize Places.
    Places.initialize(getApplicationContext(), "***YOUR API KEY***");

   // Create a new Places client instance.
   PlacesClient placesClient = Places.createClient(this);

, затем вызовите intentbuilder в textview.onclick ()

List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
// Start the autocomplete intent.
Intent intent = new Autocomplete.IntentBuilder(
        AutocompleteActivityMode.FULLSCREEN, fields)
        .build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

В результате действия вы получите выбранное место.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
            // TODO: Handle the error.
            Status status = Autocomplete.getStatusFromIntent(data);
            Log.i(TAG, status.getStatusMessage());
        } else if (resultCode == RESULT_CANCELED) {
            // The user canceled the operation.
        }
    }

После этого просто установите выбранное место в Textview.

Textview.setText(place.getName());

см .: https://stackoverflow.com/a/55045772/10579969

...