我会非常努力地把它变成一个综合性的问题:
我正在编写一个方法来获取一个包含 Android 设备城市名称的字符串,该名称由LocationManager
andgetLastKnownLocation()
和所有这些决定。
然后我意识到我需要在另一个活动中再次做同样的事情,那么为什么不创建一个完全独立的类 ( LocationFinder
),我可以在我的程序中使用它,而不是到处编写重复的代码呢?
但是我遇到了让我困惑的问题。例如,如果我创建这个类 ( LocationFinder
),它是否应该扩展 Activity,即使它从未真正可视化?这个类所要做的就是拥有各种 getter,比如getLastKnownCity()
orgetCurrentCity()
和返回字符串。我认为它不必扩展 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 类的系统常量。例如,我需要获取 at LOCATION_SERVICE
,这是一个字符串,如果不扩展 Activity 就无法获取。当然,我可以作弊并只输入文字字符串,但这感觉不对。