我正在尝试编写一个用于处理map方法的类(showmap,addmarker等),我在Activity或Fragment中调用这些方法,但是我收到了这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
我知道这意味着什么,但我能解决它 所以我希望有人可以帮助我。
这是地图calss:
public class MapHandle extends AppCompatActivity implements LocationListener {
private SupportMapFragment mapFragment;
private GoogleMap map;
public void initMap() {
mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
if (mapFragment != null) {
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap map) {
createMap(map);
}
});
} else {
Toast.makeText(this, "Error - Map Fragment was null!!", Toast.LENGTH_SHORT).show();
}
}
public void createMap(GoogleMap googleMap) {
map = googleMap;
if (map != null) {
// Map is ready
Toast.makeText(this, "Map Fragment was loaded properly!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Error - Map was null!!", Toast.LENGTH_SHORT).show();
}
}
}
在这里我将其称为活动:
public class FragOne extends Fragment {
MapHandle mh;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mh = new MapHandle();
mh.initMap();
return inflater.inflate(R.layout.frag1,container,false);
}
}
答案 0 :(得分:0)
您无法使用此
mh = new MapHandle();
Context变为null,因为它现在是一个未受管理的Activity。
您可以使用onAttach(Context context)
并转换上下文以获取对父Activity的引用。
或者,FragOne
似乎没有任何意义,只能加载地图,因此FragOne
加载并显示地图本身(例如extends SupportMapFragment
)
而且,如下所述,MapHandle
似乎不需要是一个活动。主要是因为您没有实施onCreate
,否则您将调用initMap