PlaceAutocompleteFragment.setOnPlaceSelectedListener не вызывает внутренний фрагмент - PullRequest
0 голосов
/ 16 сентября 2018

Я использую SupportPlaceAutoCompleteFragment внутри своего класса map_fragment как вложенный фрагмент. Сначала я динамически инициализировал SupportPlaceAutoCompleteFragment и удалил его при уничтожении. но PlaceAutocompleteFragmentset.OnPlaceSelectedListener метод не работает.

ниже мой код.

Фрагмент инициализации мест:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.where_to_refuel_frag, container, false);

        autocompleteFragment = new SupportPlaceAutocompleteFragment();
        android.support.v4.app.FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fragment_content, autocompleteFragment);
        ft.commit();

        autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
            @Override
            public void onPlaceSelected(Place place) {
                // TODO: Get info about the selected place.
                Log.i(TAG, "Place: " + place.getName());
                Toast.makeText(getActivity(), place.getName(), Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(Status status) {
                // TODO: Handle the error.
                Log.i(TAG, "An error occurred: " + status);
            }
            });
return rootView;
}

frame_layout в xml:

<FrameLayout
        android:id="@+id/fragment_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

Метод OnDestroy:

@Override
    public void onDestroyView() {
        if (autocompleteFragment != null) {
            android.support.v4.app.FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
            fragmentTransaction.remove(autocompleteFragment).commitNowAllowingStateLoss();
        }
        super.onDestroyView();
    }

OnActivityResult:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        autocompleteFragment.onActivityResult(requestCode, resultCode, data);
    }

Любая помощь будет по достоинству оценена.

1 Ответ

0 голосов
/ 16 сентября 2018

В моем случае я использовал зависимость: com.google.android.gms: play-services-place: 15.0.1 и com.google.android.gms: play-services-location: 15.0.1

Затем я сделал импорт, и он работал правильно.

...