마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이게 대체 뭔차인가요 실행이 안돼네요

0 추천
public void GetLocations() {
 
TextView latText = (TextView) findViewById(R.id.tvLatitude);
TextView lngText = (TextView) findViewById(R.id.tvLongitude);
TextView jusoText = (TextView) findViewById(R.id.tvAddress);
StringBuffer juso = new StringBuffer();
 
if (myLocation != null) {
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
 
try {
// 위도,경도를 이용하여 현재 위치의 주소를 가져온다.
List<Address> addresses;
addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
for (Address addr : addresses) {
int index = addr.getMaxAddressLineIndex();
for (int i = 0; i <= index; i++) {
juso.append(addr.getAddressLine(i));
juso.append(" ");
}
juso.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
latText.setText(String.valueOf(latPoint));
lngText.setText(String.valueOf(lngPoint));
jusoText.setText(String.valueOf(juso));
k = String.valueOf(latPoint);
j = String.valueOf(lngPoint);
i = String.valueOf(juso);
}
---------------------------------------------------------------------------------------
GetLocations() 정의해준겁니다.
 
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
 
sqldb = db.getWritableDatabase();
Cursor cursor = sqldb.rawQuery("SELECT * FROM CallDB;",null);
while(cursor.moveToNext()){
b = cursor.getString(0);
}
String a="sms:ok";
SmsManager sms = SmsManager.getDefault();   
sms.sendTextMessage("0"+b, null, "위도:"+k+"경도:"+j+"주소:"+i, null, null);
 
Toast.makeText(getApplicationContext(),a , Toast.LENGTH_SHORT).show();
cursor.close();
sqldb.close();
}
});
}
-------------------------------------------------------------------------------------------
GetLocations() 로인해 얻어진 위치값을 문자로 전송해주는 코드입니다
.
gpsButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
  GetLocations();
}
});
이렇게 해줄경우 버튼클릭하면 정상적으로 위치값 받아오는데
 
그냥 
GetLocations(); 만 쓸경우 위치값을 왜 못받아오는 걸가요 이유좀 알려주세요.
지미니v (1,080 포인트) 님이 2014년 6월 10일 질문

1개의 답변

0 추천
버튼 클릭했을 때 호출한 경우는 정상적으로 수행되고

그냥 함수를 사용한 경우에 못받아온다면 답은 하나임

시점문제 ㅎㅎ 그냥 함수를 사용한 경우는 언제 어느 부분에서 호출하셨나요?
초보개발자ㅠ (33,870 포인트) 님이 2014년 6월 10일 답변
그냥 oncreate에다가 GetLocations();을 쓰고
문자를 보내주는것도 예를들어 GetSns();로 함수화시켜
GetLocations();
GetSns();순서대로 쓰면
위치값은못받아오고 문자만 전송됩니다.. 위도0 경도0 주소0으로
이유가뭘가요..
위도0 경도0으로 되는 것은 위치를 못 찾아서 그런 것입니다.
위치가 갱신된 후 해당 작업을 하면 될 것으로 보입니다.
지미니님 말씀대로라면 아마도..
myLocation 문제인 것 같은데요?

onCreate 는 액티비티 생성시 제일 먼저 호출되는 함수이고
onClick 이벤트의 경우는 버튼이 눌러지는 시점~
즉, onCreate 호출 후 입니다.

GetLocations() 함수 정의 부에서는 대부분 지역변수로 선언하여
사용하고 있는데 myLocation 은 예외네요
아마도 onCreate 에서 할당을 받았다는 건데

할당받기 전에 GetLocations 를 호출하신게 아닌가 추측됩니다.

그래서 아래의 구문을 벗어나고
if (myLocation != null) {
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();

결과적으로 값이 없는? ㅎㅎ 한번 로그를 찍어확인해보세요
제가보기엔 아닌거같은데 ㅜ..ㅜ 초보라서그런가
제가 이페이지 전체소스를 올려놨는데 한번 봐줄수있나요..
안드로이드 질문입니다...버튼클릭해서 함수실행 그냥함수실행 차이가..
이게 제목이에요 최근에 올라온거에요... 부탁드립니다..
...