2012-05-18 2 views
2

클래스를 통해 데이터/변수를 전달하는 방법이 궁금합니다.android : 클래스를 통해 변수를 전달 하시겠습니까?

public class AddItem extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     mlocListener = new CurrentLocation(); 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
    } 
} 

public void sendDataDetail(View v){ 
    // This is where my HTTPPOST goes, need the location here 
} 

public class CurrentLocation implements LocationListener { 
    @Override 
    public void onLocationChanged(Location loc) { 
     // TODO Auto-generated method stub 
     loc.getLatitude(); 
     loc.getLongitude(); 
     String Text = "My Current Location is: " + "Lat = " + loc.getLatitude() + "Long = " + loc.getLongitude(); 
     Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); 
    } 
} 

Class.java 그래서 기본적으로, 나는에서 onCreate에서 CurrentLocation()를 가지고 있고, 그때 sendDataDetail에 HTTPPOST 스크립트가 있습니다. 그리고 나서 위치를 얻는 클래스가 있습니다.

위치를 얻고 sendDataDetail으로 보내려면 어떻게해야합니까? 어떤 방법을 택해야합니까?

난 아직 안드로이드를 배우고 있습니다,

사전에 감사합니다!

답변

0

하나의 방법은 Application 클래스를 확장하고 데이터로 인스턴스를 가져 와서 한 클래스에서 채우고 다른 클래스에서 사용하는 것입니다. StackOverflow의 this 질문을 참조하십시오.

기본적으로 응용 프로그램 개체를 확장하고 필드 (사례의 위치)를 추가하고 한 곳에서 설정하고 다른 곳에서 가져 오는 것입니다. 내가 언급 한 링크의 예제 코드는 다음과 같습니다.

class MyApp extends Application { 

    private String myState; 

    public String getState(){ 
    return myState; 
    } 
    public void setState(String s){ 
    myState = s; 
    } 
} 

class Blah extends Activity { 

    @Override 
    public void onCreate(Bundle b){ 
    ... 
    MyApp appState = ((MyApp)getApplicationContext()); 
    String state = appState.getState(); 
    ... 
    } 
} 

다른 방법이 있지만이 솔루션은 매우 좋습니다!

0

일부 사용 사례에서는 두 클래스의 정적 변수를 참조 할 수 있습니다. 그것은 가장 쉬울 것이고, 그것은 항상 좋은 일인 떨리는 소리를 pedants에게 줄 것입니다. 글쎄, 그들이 맞을 때를 제외하고, 물론.

관련 문제