【发布时间】:2013-06-30 17:56:52
【问题描述】:
我会努力把它变成一个综合性的问题:
我正在编写一个方法来获取包含 Android 设备城市名称的字符串,该名称由 LocationManager 和 getLastKnownLocation() 以及所有这些确定。
然后我意识到我需要在另一个活动中再次做同样的事情,所以为什么不创建一个完全独立的类 (LocationFinder) 可以在我的程序中使用,而不是到处编写重复的代码?
但我遇到了让我困惑的问题。例如,如果我创建这个类 (LocationFinder),它是否应该扩展 Activity,即使它从未真正可视化?这个类所要做的就是拥有各种 getter,如 getLastKnownCity() 或 getCurrentCity() 并返回字符串。我认为它不必扩展 Activity 类,因为它实际上不是一个活动。
然后我用什么上下文:
Geocoder geocoder = new Geocoder(Context context, Locale locale)
?
这让我认为它必须是一项活动。于是我扩展了Activity,并将构造函数替换为
@Override
protected void onCreate(..............
但由于某种原因,它永远不会被调用,即使我放了
String city = new LocationFinder().getLastKnownCity();
我LocationFinder的onCreate()的第一行是
System.out.println("HEY!")
它甚至从来没有达到过。我在android.internal.os.LoggingPrintStream.println() 和其他地方得到一个空指针。
另外,还有很多来自 Activity 类的系统常量。例如,我需要访问LOCATION_SERVICE,这是一个字符串,如果不扩展 Activity,我将无法获得它。当然,我可以作弊并只输入文字字符串,但这感觉不对。
【问题讨论】:
标签: android android-activity gps location android-context