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) {
}
});