Android SDK更新后返回null的LocationManager
问题描述:
我刚刚发布新的Android SDK后发生此错误。 每当我尝试通过LocationManager访问最后一个已知位置时,它都会创建一个NullPointerException。Android SDK更新后返回null的LocationManager
在此更新之前,这从来都不是问题,但现在,在Android SDK更新当天,它不断向我抛出该错误。我已更新Android SDK和Google Play服务,但没有运气。
这些是违规行。它们在仅保存地图的片段的OnCreateView中调用。他们习惯于确定初始位置。导致错误的行不是管理器的初始化,而是调用getLastKnownLocation的行。
LocationManager manager = (LocationManager)getActivity().getApplicationContext().getSystemService(getActivity().getApplicationContext().LOCATION_SERVICE);
myLoc = manager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
及相关错误
Caused by: java.lang.NullPointerException
at com.khakicrew.pickup.MapTab.onCreateView(MapTab.java:53)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1099)
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1201)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:292)
任何帮助将非常感激。 谢谢!
答
将您的代码参考活动移动到onActivityCreated(),就像在这个地方Activity
完全创建。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
LocationManager manager = (LocationManager) getActivity().getSystemService(
Context.LOCATION_SERVICE);
myLoc = manager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
...
}