如何从匿名类Java更新Java中的全局变量

问题描述 投票:1回答:1

我正在尝试获取用户位置的latlng,并将它们作为double传递给另一种方法。但是,我不知道该怎么做还是有可能的。

一旦我退出内部类,变量的值再次变为null。

public class MainActivity extends AppCompatActivity {

    Double lat;
    Double lng;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    public void onSearch(View v){
        String[] requiredPermissions = {
                Manifest.permission.INTERNET,
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION
        };

        boolean ok = true;

        for (int i = 0; i < requiredPermissions.length; i++) {
            int result = ActivityCompat.checkSelfPermission(this, requiredPermissions[i]);
            if (result != PackageManager.PERMISSION_GRANTED) {
                ok = false;
            }
        }

        if (!ok) {
            ActivityCompat.requestPermissions(this, requiredPermissions, 1);
            // that last parameter MUST be >0, or it fails silently
            System.exit(0);
        } else {
            // doStuffThatNeedsPermissions();
            LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    lat = location.getLatitude();
                    lng = location.getLongitude();

                    System.out.println("location is : " + lat + lng);
                }

                @Override
                public void onStatusChanged(String s, int i, Bundle bundle) {
                }

                @Override
                public void onProviderEnabled(String s) {
                }

                @Override
                public void onProviderDisabled(String s) {
                }
            });

            //System.out.println("location is here is : " + lat + lng);
        }

        //System.out.println("location is dow here is : " + lat + lng);
    }

}
java android
1个回答
-1
投票

我无权发表评论,所以才回答问题。

据我了解。尽管有很多方法。这里是您可以在整个课程中使用的方法。

private Double lat,lng;
...
@Override
        public void onLocationChanged(Location location) {
            this.lat = location.getLatitude();
            this.lng = location.getLongitude();

            System.out.println("location is : " + this.lat + this.lng);
        }
...


System.out.println("location is here is : " + this.lat + this.lng);

我编辑了答案。我犯了一个愚蠢的错误。对此表示抱歉。

© www.soinside.com 2019 - 2024. All rights reserved.