[英]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.