티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How can I use getSystemService in a non-activity class (LocationManager)?
비액티비티 클래스(LocationManager)에서 getSystemService를 사용하려면 어떻게 해야 합니까?
문제 내용
I'm having trouble offloading tasks from the main Activities OnCreate method onto another class to do the heavy lifting.
무거운 작업을 수행하기 위해 기본 액티비티 onCreate 메서드에서 다른 클래스로 작업을 분담하는데 문제가 있습니다.
When I try to call getSystemService from the non-Activity class an exception is thrown.
비액티비티 클래스에서 getSystemService를 호출하려고 하면 예외가 발생합니다.
Any help would be greatly appreciated :)
어떤 도움이든 정말 감사합니다 :)
lmt.java:
package com.atClass.lmt;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.location.Location;
public class lmt extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fyl lfyl = new fyl();
Location location = lfyl.getLocation();
String latLongString = lfyl.updateWithNewLocation(location);
TextView myLocationText = (TextView)findViewById(R.id.myLocationText);
myLocationText.setText("Your current position is:\n" + latLongString);
}
}
fyl.java
package com.atClass.lmt;
import android.app.Activity;
import android.os.Bundle;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.content.Context;
public class fyl {
public Location getLocation(){
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
String provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
return location;
}
public String updateWithNewLocation(Location location) {
String latLongString;
if (location != null){
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "Lat:" + lat + "\nLong:" + lng;
}else{
latLongString = "No Location";
}
return latLongString;
}
}
높은 점수를 받은 Solution
You need to pass your context to your fyl class..
One solution is make a constructor like this for your fyl
class:
컨텍스트를 fyl 클래스에 전달해야 합니다.
한 가지 해결책은 fyl 클래스에 대해 다음과 같은 생성자를 만드는 것입니다.
public class fyl {
Context mContext;
public fyl(Context mContext) {
this.mContext = mContext;
}
public Location getLocation() {
--
locationManager = (LocationManager)mContext.getSystemService(context);
--
}
}
So in your activity class create the object of fyl in onCreate
function like this:
따라서 액티비티 클래스에서 다음과 같이 onCreate 함수에서 fyl 객체를 생성합니다.
package com.atClass.lmt;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.location.Location;
public class lmt extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fyl lfyl = new fyl(this); //Here the context is passing
Location location = lfyl.getLocation();
String latLongString = lfyl.updateWithNewLocation(location);
TextView myLocationText = (TextView)findViewById(R.id.myLocationText);
myLocationText.setText("Your current position is:\n" + latLongString);
}
}
가장 최근 달린 Solution
You can go for this :
다음을 수행할 수 있습니다:
getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
출처 : https://stackoverflow.com/questions/4870667/how-can-i-use-getsystemservice-in-a-non-activity-class-locationmanager
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드 뷰의 배경 색상 애니메이션하기 (0) | 2023.01.08 |
---|---|
안드로이드에서 다이얼로그 버튼 텍스트 색상 변경하기 (0) | 2023.01.08 |
지원 중단된 Html.fromHtml 구현하기 (0) | 2023.01.07 |
액티비티 재시작하기 (0) | 2023.01.06 |
AsyncTask.OnPostExecute()의 결과를 메인 액티비티에서 받기 (0) | 2023.01.06 |