怎么获取监听器里面的值,供其他函数使用

如下代码,怎么获取到lat和lon供其他函数使用

public AMapLocationListener mLocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation amapLocation) {
            if (amapLocation != null) {
                if (amapLocation.getErrorCode() == 0) {
                    Log.i("cao","当前定位结果来源-----"+amapLocation.getLocationType());
                    lat =amapLocation.getLatitude();
                    lon = amapLocation.getLongitude();
                    setlat(lat);
                    setlon(lon);
                    TextView textView1 = findViewById(R.id.jd);
                    TextView textView2 =findViewById(R.id.wd);
                    textView1.setText(String.valueOf(lat));
                    textView2.setText(String.valueOf(lon));
                    Log.d("经度是","当前是-----"+lat+"纬度是"+lon);

                } else {
                    //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + amapLocation.getErrorCode() + ", errInfo:"
                            + amapLocation.getErrorInfo());
                }
            }
        }
    };

试试把onLocationChanged方法变成带返回值的,返回经纬度;
再这样调用
mLocationListener.onLocationChanged(amapLocation)

建立一个可共享域的缓存结构,设定好标识,其他地方使用,直接取值即可。注意缓存值的有效期及清理方式。