Почему Geocoder.getFromLocationName возвращает ноль?

Я использую Google Map V2. Я хочу использовать geocoderчтобы найти место, но getFromLocationName() это возвращает мне нулевое значение, и я не мог найти почему. Просто посмотрите мой код и предложите мне, что мне делать?

EditText sLocation = (EditText) v.findViewById(R.id.editText1);
                String location = sLocation.getText().toString();

                List<android.location.Address> addressList= null;

                if (location != null || !location.equals("")) {
                    Geocoder geocoder = new Geocoder(getActivity().getApplicationContext());
                    try {
                        addressList = geocoder.getFromLocationName(location, 1);

                    } catch (IOException e) {
                        e.printStackTrace();
                    }


                    android.location.Address address = addressList.get(0);
                    LatLng latlng = new LatLng(address.getLatitude(), address.getLatitude());
                    gMap.addMarker(new MarkerOptions().position(latlng).title("Marker"));
                    gMap.animateCamera(CameraUpdateFactory.newLatLng(latlng));

                }

1 ответ

Я получаю нулевую форму getFromLocationName(), Потому что мой addressList получает нулевое значение от местоположения. Когда я объявил мой EditText в onClick метод тогда getFromLocationName() верните мне правильное значение, как это:

sButton =(Button) v.findViewById(R.id.generalId);
sButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                EditText sLocation = (EditText)getActivity().findViewById(R.id.editText1);
                location = sLocation.getText().toString();

                List<android.location.Address> addressList= null;

                if (location != null || location.length()>0) {
                    Geocoder geocoder = new Geocoder(getActivity().getApplicationContext());
                    try {
                        addressList = geocoder.getFromLocationName(location, 1);

                    } catch (IOException e) {

                            e.printStackTrace();
                    }

                    android.location.Address address = addressList.get(0);
                    String locality = address.getLocality();
                    Toast.makeText(getActivity(), locality, Toast.LENGTH_LONG).show();
                    double latitude = address.getLatitude();
                    double longitude = address.getLongitude();
                    LatLng latLng = new LatLng(latitude, longitude);
                    gMap.addMarker(new MarkerOptions().position(latLng).title("Marker"));
                    gMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

                }

            }
        });