【问题标题】:Validate PlaceAutocompleteFragment in android在 android 中验证 PlaceAutocompleteFragment
【发布时间】:2018-06-26 22:22:07
【问题描述】:

我正在尝试在 android 中验证 PlaceAutocompleteFragment。如果它是空的,我想添加一个 toast,如果它不是空的,那么我想做一些处理。这是我的 PlaceAutocompleteFragment。如果没有选择任何地方,我可以附加一个事件侦听器来验证吗?

仅供参考,这是适用于 Android 的 Google Places API

final PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
                    getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
    @Override
    public void onPlaceSelected(Place place) {
        // TODO: Get info about the selected place.           
    }

    @Override
    public void onError(Status status) {
        // TODO: Handle the error.
        Log.i("An error occured: " , status.toString());
    }
});

【问题讨论】:

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


    【解决方案1】:

    您也可以使用放置自动完成请求来代替使用这样的片段

     public void openPlaceAutoComplete() {
        try {
            Intent intent =
                    new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                            .build(getActivity());
            startActivityForResult(intent, Constants.PLACE_AUTOCOMPLETE_REQUEST_CODE);
        } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
            // TODO: Handle the error.
            e.printStackTrace();
        }
    }
    

    你可以在活动结果方法上得到这样的结果......

     if (resultCode == Activity.RESULT_OK) {
                    Place place = PlaceAutocomplete.getPlace(getActivity(), data);
                    setAddress(place.getAddress().toString(), place.getLatLng().latitude,
                            place.getLatLng().longitude);
                } else if (resultCode == PlaceAutocomplete.RESULT_ERROR) {
                    Status status = PlaceAutocomplete.getStatus(getActivity(), data);
                } else if (resultCode == Activity.RESULT_CANCELED) {
                    Toast.makeText(getActivity(), "No places Selected", Toast.LENGTH_SHORT).show();
                }
    

    【讨论】:

      【解决方案2】:

      全局创建一个 latLng 变量。

      LatLng latLngPickup = null
      
      @Override
          public void onPlaceSelected(Place place) {
              // TODO: Get info about the selected place. 
              //Place place = places.get(0);
              latLngPickup = place.getLatLng();
      
          }
      

      当你想检查用户是否选择了地点时,像这样检查

      if (latLngPickup == null) {
              // your alert \\
              return;
          }
      

      【讨论】:

      • 感谢反馈。我是在 onPlaceSelected 方法内部还是外部添加条件?当我尝试在方法之外添加它时出现错误,但如果我在方法中添加它,Toast 不会显示
      • 每当您想检查用户是否选择了地点时,请在外面添加方法,或者请您记录一下(latLngPickup.latitude 和 latlngPickup.longitude)并告诉我
      • 是的,我在尝试时遇到的错误是 Unknown Class: 'latLngPickup' 即返回时出现错误也说返回外部方法
      • 你能贴出你尝试过我的代码吗?
      【解决方案3】:
      Sorry I had to add my code as an answer, I cant add a comment in reply to yours Rahul
      
      Here is my code
      
      autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
                   LatLng latLngPickup = null;
                      @Override
                      public void onPlaceSelected(Place place) {  
                          latLngPickup=place.getLatLng();
                        }
                      if(latLngPickup.latitude == null) {
                          Toast error = Toast.makeText(getApplicationContext(), "Please Select a location", Toast.LENGTH_LONG);
                          error.show();
                          return;
                          }
      
                          @Override
                          public void onError(Status status) {
                              // TODO: Handle the error.
                              Log.i("An error occured: " , status.toString());
                          }
                      });
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多