Отображение текущего адреса в виде тоста - PullRequest
2 голосов
/ 12 марта 2012

Я пишу приложение и мне нужно отобразить адрес, чтобы я мог использовать его позже. Я получаю местоположение из LocationManager и хочу отобразить тост, показывающий адрес при нажатии. Моя проблема в том, что при нажатии кнопки ничего не происходит. (Даже не в LogCat)

Вот код:

Button getTaxi = (Button) findViewById(R.id.GetTaxi);
getTaxi.setOnClickListener(new View.OnClickListener() {

    public void getAddress() {
        Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
        String result = null;
        try {
            List<Address> list = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
            if (list != null && list.size() > 0) {
                Address address = list.get(0);
                // sending back first address line and locality
                result = address.getAddressLine(0) + ", " + address.getLocality();
            }
        } catch (IOException e) {
            String exception = String.format("IOException!!");
            Toast.makeText(getApplicationContext(), exception, Toast.LENGTH_LONG);
        } finally {
            if (result != null) {
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG);
            } else 
                Toast.makeText(getApplicationContext(), "nix is", Toast.LENGTH_LONG);
        }

        final Intent intent = new Intent();
        setResult(RESULT_OK, intent);
        finish();
        return;
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    }
});

Я знаю, что это действительно грязно, но я только начал программировать на JAVA / Android.

Большое спасибо заранее!

Ответы [ 4 ]

5 голосов
/ 12 марта 2012

Сделайте это вместо:

Button getTaxi = (Button) findViewById(R.id.GetTaxi);
getTaxi.setOnClickListener(new View.OnClickListener() {


    Toast toast;

    public void getAddress() {
        Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());   
        String result = null;
        try {
            List<Address> list = geocoder.getFromLocation(
                    location.getLatitude(), location.getLongitude(), 1);
            if (list != null && list.size() > 0) {
                Address address = list.get(0);
                // sending back first address line and locality
                result = address.getAddressLine(0) + ", " + address.getLocality();
            }
        } catch (IOException e) {
            String exception = String.format("IOException!!");
            toast = Toast.makeText(getApplicationContext(), exception, Toast.LENGTH_LONG);
        } finally {

            if (result != null) {
                toast = Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG);
            } else 
                toast = Toast.makeText(getApplicationContext(), "nix is", Toast.LENGTH_LONG);
        }




        final Intent intent = new Intent();
        setResult(RESULT_OK, intent);
        finish();
        return;
    }


    @Override
    public void onClick(View v) {
        getAddress();
        toast.show();
    }
});
2 голосов
/ 12 марта 2012

public void onClick(View v) должен иметь код, так как это то, что выполняется при нажатии кнопки. В вашем случае, похоже, вы могли бы просто позвонить getAddress() внутрь onClick().

2 голосов
/ 12 марта 2012

getAddress не вызывается.Добавьте getAddress () в методе onClick.

0 голосов
/ 12 марта 2012

вы должны сделать метод onclick и затем вы должны передать getAddress () затем после того, как вы можете легко так адрес, когда вы нажимаете кнопку

...