在多个“类”中使用一个字符串

时间:2014-11-03 12:15:06

标签: java android string variables global-variables

我对android不太好,所以我只是想问你这个:

我想传输一些"数据" (GPS坐标)从我的位置监听器到一个字符串,将用于onClick功能。如:

case R.id.sendButton:

        ParsePush push = new ParsePush();
        String message = "Hey, My coordinates are - LONG:" + loc.getLongitude();;

        push.setChannel("test1");
        push.setMessage(message);
        push.sendInBackground();


        break;

是的,我 DO 有位置监听器:

   class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {
            mlocation.setText("");

            Toast.makeText(
                    getBaseContext(),
                    "Location changed: Lat: " + loc.getLatitude() + " Lng: "
                        + loc.getLongitude(), Toast.LENGTH_SHORT).show();
            String longitude = "Longitude: " + loc.getLongitude();
            Log.v("Long", longitude);
            String latitude = "Latitude: " + loc.getLatitude();
            Log.v("Lat", latitude); 

ETC ....

基本上,我希望能够将经度设置为某个变量(字符串)并在我的onClick按钮中使用该字符串。

我该怎么做?任何链接都会很棒。谢谢!

2 个答案:

答案 0 :(得分:1)

不要使用全局变量(静态)变量!非常非常糟糕!你应该只在一些非常精选的编程问题中使用它们。

对这样的问题使用get模式!下面的示例代码显示了如何使用get(和set)模式。

class MyLocationListener implements LocationListener {

    private String longitude;
    private String latitude;


    public String getLongitude(){
        return longitude;
    }

    public String getLatitude(){
        return latitude;
    }

    @Override
    public void onLocationChanged(Location loc) {
        longitude = "Longitude: " + loc.getLongitude();
        Log.v("Long", longitude);
        atitude = "Latitude: " + loc.getLatitude();
        Log.v("Lat", latitude); 
    }

}

在您的活动中保留听众的实例

//Initialize your listener in the onCreate for example
MyLocationListener listener = ;

要获得经度或纬度,请使用:

//In the onClick
if(listener.getLongitude() != null){
    //Do something with the value.
} else {
    //No longitude available yet.
}

答案 1 :(得分:0)

声明要在类之外使用的变量,或者想要通过全局类来访问它,比如

public static String mystring;

如果要在其他类中访问它,请通过classname.mystring访问它。 如果你想在同一个类中访问它,只需通过访问mystring来使用。