繁体   English   中英

如何从Java中的另一个类访问一个类的函数的变量

[英]How to access the variables of a function of a class from another class in Java

CustLatLongCoOrdinates.java

public class CustLatLongCoOrdinates extends Activity implements LocationListener {

    LocationManager locationManager;
    LocationListener locationListener;
    String lat;
    String provider;
    String srcLatitude;
    String srcLongitude;
    protected boolean gps_enabled,network_enabled;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        srcLatitude=location.getLatitude()+"";
        srcLongitude=location.getLongitude()+"";
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }
}

SplashActivity.java

public class SplashActivity extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);


    }
}

我想做什么 ::

如何访问srcLatitudesrcLongitudeCustLatLongCoOrdinates SplashActivity类的oncreate方法


我尝试过的内容 ::

 public class SplashActivity extends Activity {


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);

                CustLatLongCoOrdinates obj=new CustLatLongCoOrdinates();
                obj.onLocationchanged().srcLatitude;

        }
    }
  • 我无法做到这一点obj.onLocationchanged().srcLatitude;
  • 这可能吗 ?

您不能,函数中的变量的作用域仅限于函数主体。

尝试使它作为类级别的变量(并且可以访问)

创建一个包含srcLatitude和srcLongitude成员的单例,并从所需的任何类中对其进行更新。 或者您的LocationListener可能应该是单例。

尝试更改:

String srcLatitude;
String srcLongitude;

public String srcLatitude;
public String srcLongitude;

在类CustLatLongCoOrdinates ,然后按以下方式访问它:

CustLatLongCoOrdinates obj=new CustLatLongCoOrdinates();
obj.onLocationchanged()

/* Access them here */
obj.srcLatitude;
obj.srcLongitude

将这两个变量设为公共静态字符串srcLatitude,srcLongitude;

然后在SplashActivity.java中以以下方式访问它:

public class SplashActivity extends Activity 
{
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
           CustLatLongCoOrdinates.srcLatitude;

        }
}

您可以像这样访问

CustLatLongCoOrdinates obj=new CustLatLongCoOrdinates();
obj.srcLatitude;

但是有时您会得到空值。

如果使用static关键字声明的变量将保留最后更改的值。 请检查以下内容。

public static String srcLatitude;
public static String srcLongitude;

在这种情况下,您可以直接访问以下变量。

CustLatLongCoOrdinates.srcLatitudeCustLatLongCoOrdinates.srcLongitude

更多的时候它将给你一个空值。

创建用于吸气剂/ setter方法srcLatitude & srcLongitudeCustLatLongCoOrdinates类,并使用在这些方法中SplashActivity

“ srcLatitude和srcLongitude”具有“ 默认范围

因此,如果在同一包中定义了Classes:SplashActivity&CustLatLongCoOrdinates,则可以使用以下代码:

CustLatLongCoOrdinates customCoordObject=new CustLatLongCoOrdinates();
customCoordObject.srcLatitude;
customCoordObject.srcLongitude;

否则,使用下面的代码:

//在类中将访问修饰符更改为“ public”:CustLatLongCoOrdinates

public String srcLongitude;

public String srcLatitude;

//然后在“ Classes:SplashActivity”中编写以下代码:

CustLatLongCoOrdinates customCoordObject=new CustLatLongCoOrdinates();
    customCoordObject.srcLatitude;
    customCoordObject.srcLongitude;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM