【问题标题】:PlaceAutocompleteFragment - Identify calling object in onPlaceSelected methodPlaceAutocompleteFragment - 在 onPlaceSelected 方法中识别调用对象
【发布时间】:2017-02-17 08:08:32
【问题描述】:

我创建了 2 个 PlaceAutocompleteFragment 类的对象,并在两者上都设置了 OnPlaceSelectedListener。

placePickup = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.place_source);
placePickup.setOnPlaceSelectedListener(this);

placeDrop = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.place_target);
placeDrop.setOnPlaceSelectedListener(this);

现在,我想找到一种方法来识别哪个对象调用了 onPlaceSelected() 方法。

@Override
public void onPlaceSelected(Place place) {
    latLng = place.getLatLng();

    if (invoking object is placePickup){
        do this;
    }
    if (invoking object is placeDrop){
        do this;
    }
}

【问题讨论】:

    标签: java android google-places-api google-maps-android-api-2


    【解决方案1】:

    你可以维护一个布尔变量 当用户点击 pickUp 时,使该变量为 true。

    boolean isPickUp=false;
    

    在您加载 PlaceAutoComplete 片段的拾取器的 onCLlick 上使其成为真; 并且 onCLick 的 drop 使它成为 false;

    if (isPickUp){
        do pickUp related work;
    }
    else{
        do drop related work here;
    }
    

    【讨论】:

    • 感谢@Muhib 回复。实际上,PlaceAutoComplete 只有一个事件,即 OnPlaceSelected.... 无论如何,我已经通过内联调用 onPlaceSelected 方法实现了我想要的。
    【解决方案2】:

    使用下面的内联调用。

    placePickup = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.place_source);
    placePickup.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            Log.e(TAG,"Pick Up");
    
        }
    
        @Override
        public void onError(Status status) {
    
        }
    });
    
    placeDrop = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.place_target);
    placeDrop.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            Log.e(TAG,"Drop");             
        }
    
        @Override
        public void onError(Status status) {
    
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      相关资源
      最近更新 更多