簡體   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