Google Автозаполнение нескольких фрагментов, как отделить его метод слушателей?

Так что я все еще учусь программировать на Android.

Я использую фрагмент автозаполнения Google, и я добавил два фрагмента в один макет XML, один для представления начальной точки, а другой для конечной точки.

<fragment android:id="@+id/autocomplete_fragment_origin"
android:name="com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

В моей основной деятельности, где я инициализировать фрагмент автозаполнения

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps); // to call the screen layout you do this first
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // this is how you call a fragment
        mapFragment.getMapAsync(this); // implements OnMapReadyCallback which has the method onMapReady()

        // Just initializing the other object on activity_maps
        btnFindPath = (Button) findViewById(R.id.btnFindPath);
        etOrigin = (EditText) findViewById(R.id.etOrigin);
        etDestination = (EditText) findViewById(R.id.etDestination);

        // Set Button On Click Listener
        btnFindPath.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendRequest();
            }
        });

        //Auto complete
        // Retrieve the PlaceAutocompleteFragment.
         autocompleteFragmentOrigin = (SupportPlaceAutocompleteFragment)
                getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment_origin);
        autocompleteFragmentOrigin.setOnPlaceSelectedListener(this);

         autocompleteFragmentDestination = (SupportPlaceAutocompleteFragment)
                getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment_destination);
        autocompleteFragmentDestination.setOnPlaceSelectedListener(this);

    }

И снаружи у меня был метод переопределения слушателя,

@Override
public void onPlaceSelected(Place place) {
    Log.i(TAG, "Place Selected: " + place.getName());
}
@Override
public void onError(Status status) {
    Log.e(TAG, "onError: Status = " + status.toString());

    Toast.makeText(this, "Place selection failed: " + status.getStatusMessage(),
            Toast.LENGTH_SHORT).show();
}

Итак, теперь я хочу получить фрагмент текста, который был выбран, поэтому я решил, что могу использовать параметр place, который получается через onPlaceSelected. Однако, как мне отделить методы слушателей? Поскольку я считаю, что оба фрагмента сейчас используют один и тот же метод.

1 ответ

Вы можете установить различные прослушиватели для autocompleteFragmentOrigin и autocompleteFragmentDestination.

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

        }

        @Override
        public void onError(Status status) {

        }
    });

autocompleteFragmentDestination = (SupportPlaceAutocompleteFragment) getSupportFragmentManager()
        .findFragmentById(R.id.autocomplete_fragment_destination);
autocompleteFragmentDestination.setOnPlaceSelectedListener((new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {

        }

        @Override
        public void onError(Status status) {

        }
    });
Другие вопросы по тегам