[英]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);
}
}
我想做什么 ::
如何访问srcLatitude
& srcLongitude
类CustLatLongCoOrdinates
。 从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.srcLatitude
和CustLatLongCoOrdinates.srcLongitude
更多的时候它将给你一个空值。
创建用于吸气剂/ setter方法srcLatitude & srcLongitude
在CustLatLongCoOrdinates
类,并使用在这些方法中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.