도시를 가져오고 싶지만 다음 코드를 사용하여 "생성자 Geocoder (SitesAdapter, Locale)가 정의되지 않았습니다."라고 표시하고 여러 가지 방법을 시도합니다. 이 포럼과 다른 사람과 나는 올바른 해결책을 찾지 못합니다. Geocoder (Context, Locale)에서 올바른 컨텍스트는 무엇입니까?오류 : 생성자 Geocoder (Context, Locale)가 정의되지 않았습니다.
지오 코더 :
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(SitesAdapter.this, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1);
String city= addresses.get(0).getAddressLine(1);
전체 코드 :
public class SitesAdapter extends ArrayAdapter<StackSite> {
public SitesAdapter(Context ctx, int textViewResourceId, List<StackSite> sites) {
super(ctx, textViewResourceId, sites);
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
...
//Get our View References
TextView tituloTxt = (TextView)row.findViewById(R.id.tituloTxt);
TextView fechaTxt = (TextView)row.findViewById(R.id.fechaTxt);
TextView magTxt = (TextView)row.findViewById(R.id.magTxt);
TextView depthTxt = (TextView)row.findViewById(R.id.depthTxt);
String stringlat = this.getItem(pos).getLat();
Double lat = Double.parseDouble(stringlat);
String stringlng = this.getItem(pos).getLng();
Double lng = Double.parseDouble(stringlng);
String dateUTC = this.getItem(pos).getFecha();
String stringDepth = this.getItem(pos).getDepth();
Double depth = Double.parseDouble(stringDepth);
//GET CITY
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(SitesAdapter.this, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1);
String city= addresses.get(0).getAddressLine(1);
...
}
}
UPDATE 최종 코드 - 최초의 솔루션 :
Geocoder geocoder;
List<Address> addresses = null;
geocoder = new Geocoder(mContext, Locale.getDefault());
try {
addresses = geocoder.getFromLocation(lat, lng, 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String city= addresses.get(0).getAddressLine(1);
로그 캣 - 최초의 솔루션 :
11-07 17:27:32.283: I/StackSites(3808): adapter size = 327
11-07 17:27:32.303: I/StackSites(3808): getView pos = 0
11-07 17:27:32.383: W/System.err(3808): java.io.IOException: Service not Available
11-07 17:27:32.413: W/System.err(3808): at android.location.Geocoder.getFromLocation(Geocoder.java:136)
11-07 17:27:32.413: W/System.err(3808): at com.gestionderiesgos.sismosecuador.SitesAdapter.getView(SitesAdapter.java:101)
11-07 17:27:32.413: W/System.err(3808): at android.widget.AbsListView.obtainView(AbsListView.java:2271)
11-07 17:27:32.413: W/System.err(3808): at android.widget.ListView.makeAndAddView(ListView.java:1812)
11-07 17:27:32.413: W/System.err(3808): at android.widget.ListView.fillDown(ListView.java:687)
11-07 17:27:32.413: W/System.err(3808): at android.widget.ListView.fillDown(ListView.java:666)
11-07 17:27:32.413: W/System.err(3808): at android.widget.ListView.fillFromTop(ListView.java:758)
11-07 17:27:32.413: W/System.err(3808): at android.widget.ListView.layoutChildren(ListView.java:1665)
11-07 17:27:32.413: W/System.err(3808): at android.widget.AbsListView.onLayout(AbsListView.java:2106)
11-07 17:27:32.413: W/System.err(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.413: W/System.err(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.413: W/System.err(3808): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:953)
11-07 17:27:32.413: W/System.err(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.413: W/System.err(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.413: W/System.err(3808): at android.widget.FrameLayout.onLayout(FrameLayout.java:461)
11-07 17:27:32.413: W/System.err(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.413: W/System.err(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.423: W/System.err(3808): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1688)
11-07 17:27:32.423: W/System.err(3808): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1546)
11-07 17:27:32.423: W/System.err(3808): at android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
11-07 17:27:32.423: W/System.err(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.423: W/System.err(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.433: W/System.err(3808): at android.widget.FrameLayout.onLayout(FrameLayout.java:461)
11-07 17:27:32.433: W/System.err(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.433: W/System.err(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.433: W/System.err(3808): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1872)
11-07 17:27:32.433: W/System.err(3808): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1693)
11-07 17:27:32.433: W/System.err(3808): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
11-07 17:27:32.443: W/System.err(3808): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4218)
11-07 17:27:32.443: W/System.err(3808): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
11-07 17:27:32.443: W/System.err(3808): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
11-07 17:27:32.443: W/System.err(3808): at android.view.Choreographer.doFrame(Choreographer.java:525)
11-07 17:27:32.443: W/System.err(3808): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
11-07 17:27:32.443: W/System.err(3808): at android.os.Handler.handleCallback(Handler.java:615)
11-07 17:27:32.443: W/System.err(3808): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 17:27:32.443: W/System.err(3808): at android.os.Looper.loop(Looper.java:137)
11-07 17:27:32.443: W/System.err(3808): at android.app.ActivityThread.main(ActivityThread.java:4744)
11-07 17:27:32.443: W/System.err(3808): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 17:27:32.443: W/System.err(3808): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 17:27:32.453: W/System.err(3808): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-07 17:27:32.453: W/System.err(3808): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-07 17:27:32.453: W/System.err(3808): at dalvik.system.NativeStart.main(Native Method)
11-07 17:27:32.453: D/AndroidRuntime(3808): Shutting down VM
11-07 17:27:32.453: W/dalvikvm(3808): threadid=1: thread exiting with uncaught exception (group=0x41959318)
11-07 17:27:32.463: E/AndroidRuntime(3808): FATAL EXCEPTION: main
11-07 17:27:32.463: E/AndroidRuntime(3808): java.lang.NullPointerException
11-07 17:27:32.463: E/AndroidRuntime(3808): at com.gestionderiesgos.sismosecuador.SitesAdapter.getView(SitesAdapter.java:106)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.AbsListView.obtainView(AbsListView.java:2271)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.ListView.makeAndAddView(ListView.java:1812)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.ListView.fillDown(ListView.java:687)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.ListView.fillDown(ListView.java:666)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.ListView.fillFromTop(ListView.java:758)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.ListView.layoutChildren(ListView.java:1665)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.AbsListView.onLayout(AbsListView.java:2106)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:953)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.FrameLayout.onLayout(FrameLayout.java:461)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1688)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1546)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.widget.FrameLayout.onLayout(FrameLayout.java:461)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.View.layout(View.java:13879)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewGroup.layout(ViewGroup.java:4472)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1872)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1693)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4218)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.Choreographer.doFrame(Choreographer.java:525)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.os.Handler.handleCallback(Handler.java:615)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.os.Looper.loop(Looper.java:137)
11-07 17:27:32.463: E/AndroidRuntime(3808): at android.app.ActivityThread.main(ActivityThread.java:4744)
11-07 17:27:32.463: E/AndroidRuntime(3808): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 17:27:32.463: E/AndroidRuntime(3808): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 17:27:32.463: E/AndroidRuntime(3808): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-07 17:27:32.463: E/AndroidRuntime(3808): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-07 17:27:32.463: E/AndroidRuntime(3808): at dalvik.system.NativeStart.main(Native Method)
11-07 17:27:34.875: I/Process(3808): Sending signal. PID: 3808 SIG: 9
감사합니다 @ Pycpik이 작동하지만 지금은이 줄에 오류가 나타납니다. address = geocoder.getFromLocation (lat, lng, 1); 그리고 1 수정 "서라운드와 시도/잡기"보여 다음 변수 값을 "null"값으로 초기화했지만 응용 프로그램을 실행하면 오류가 표시되고 닫습니다. 질문에 로그 고양이를 넣었습니다. 도움을 주셔서 감사합니다. –
다른 문제 일 수 있습니다. 장치가 지오 코더 (AOSP의 일부가 아님)를 구현하지 않은 것 같습니다. check [here] (http://stackoverflow.com/questions/4761052/why-is-android-geocoder-throwing-a-service-not- available-exception) 또는 networkLocator 서비스의 문제 : [여기] (http://stackoverflow.com/questions/15110528/service-not-available-while-calling-geocoder-getfromlocation)를 확인하십시오. 너무 재부팅 해보십시오! – Pycpik