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); 
    ... 
}